Improved serialisation utility class.
Big improvements to the reflection system. A bit less static than I would have originally liked, but registration is a lot cleaner.

Still todo:
- Rename "ClassDefinition" to "ClassSerialiser", since that is what it's function is now.
- Implement "ObjectSerialiser" to remove object dependencies from the serialiser.
- Implement containers (C array, std::array, std::vector, std::list, std::map, std::set) in "ClassSerialiser". Allow these to be overridable.