Add draft of a unified serialization system that passes the existing unit tests. API is subject to change!

The usual `(de)serialize(B/J)son` can be switched to the new system using -version=VibeNewSerialization.

Notable features
 - Unifies handling of UDAs and handling of non-primitive types, such as structs or arrays
 - Adds support for @ignore, @optional @name(string) and @byName
 - BsonSerializer builds an efficient O(n) in-memory representation using an Appender instead of the old inefficient serializer
 - JsonStringSerializer supports allocation-less serialization of JSON data by outputting to an output range.
 - JsonStringSerializer also supports allocation-less deserialization for simple struct hierarchies (no dynamic arrays, associative arrays, classes or Json values)
Add a simple ProxyStream class to be able to dynamically switch underlying streams.