Make `serde` optional
This change makes the serde dependency optional to reduce the total number of dependencies from 57 to 51 using --no-default-features flag.
Also for simpler maintainablity, moved SerializableProof into separate serializable modules, so by placing #[cfg(feature = "serde")] above it's declaration the whole implementations and structures became optional (instead of placing #[cfg(feature = "serde")] above each of them).
Removed usage of serde inside tests for more prefered Debug implementations.
Conflicts with #2 as some of the code was updated in the tests
It will be great to add checks and tests with serde feature and without into CI