Fix min/max under MSVC
Do not explicitly link with core (seems unneeded)
Use COW!
Move serialise into a separate library