Temporary branch to save work on OS X build while updating VM

I'm not sure how the VM will handle upgrading the OS but it seems like I
need to in order to  get the latest clang and I don't want to lose the
work. This branch probably won't live for long
Rough OS X build now working, need to decide on final Notify enum vals

Also todo: clean up all implementations and rule of 3
Merge osx temp branch with rough os x impl