Make Object free itself on init and destruction

Will make for a *much* easier way to code.

Patches with more std::move coming on top.

Most things seem to work though i'm pretty sure some things are broken.

NEEDS TESTING
24 files changed