Update license
Database: Remove copy in favor of pointer swap

This is quite a performance improvement over the deep copy each
commit.
Use copy ctor for initialization from prototype

This is more efficient than a mem copy, as the compiler can at least
use the copy semantics while optimizing.