Custom serliazation

Pull request represent a possible implementation to allow for custom serialization, also added JsonSerialzer implementation.

Extended 

```c#
BuildConfiguration.WithSerializer(ISerliazer ..)
```

All tests pass locally, except the throughput tests.