Added make_unique utility template

Use it wherever you want to create a unique_ptr, just like
make_shared. This saves you from writing the type name twice.

So instead of this

    auto ptr = std::unique_ptr<MyClass>(new MyClass());

write this

    #include "util/make_unique.h"
    // ...
    auto ptr = make_unique<MyClass>();
Added a ScopeGuard utility class

The ScopeGuard allows you to execute code when the current scope
exits, regardless of how the scope was left, e.g. by returning
from it or when an exception was thrown.
Added signalling framework

Signals are a type-safe, many to many messaging technique.
Merge branch 'Daniferrito' of https://github.com/Nimbal/Thrive into Daniferrito
Added contrib subdirectory for third-party libraries

Currently, this contains a copy of Lua and a submodule for the
Google Test framework.
Added entity / component framework with Lua integration

Not quite done yet, but getting there.
Added Vim swap files to gitignore
Added ComponentFilter template
Added shared state classes
Removed some unused stuff from the Entity "class"
Added a more flexible property class template

The new Property template can use a third-party getter /
setter. The old property has been renamed to SimpleProperty
and still maintains its own internal value.
Tweaked SharedData template
Adding and removing components is now thread-safe
Introduced the EntityManager for global components
Renamed shared_state.* to shared_data.*
SharedData is now truly shared, not just via shared_ptr

This change also made the StableSharedData obsolete
SharedData now holds an array of values, not pointers
Integrated SimpleProperty and Property template
SharedData now updates its working copy if necessary
SharedData is now qualified by Reader / Writer, not by state group