Preparations for Windows native MinGW build
Windows setup script working
Fixed some leftovers in the cross compile setup scripts
Tweaked Windows build setup scripts

* Added some informative output
* Use Copy-Item instead of robocopy to avoid admin requirements
* Download precompiled bjam so that no preinstalled compiler is needed
* Added popup message when done
* Fixed directory browser dialog not opening in shell enviroment
Another round of build script tweaks

* Added archiver to toolchain file
* Clarified readme
Fixed build setup script not copying mingw correctly
Moved Ogre_SDK CMake variable to cache

This allows users to point the build system to their own SDK
installation.
Moved CMake's add_sources to separate module

Keeps the main CMakeLists.txt clean
Cleaned up CMakeLists.txt

Added some comments, removed leftover cruft and reformatted
some things.
Added scaffolding for unit tests

The mingw setup script now also installs the Google Test
framework. You can also set the GOOGLE_TEST_DIR CMAke cache
variable to point to your Google Test source directory.

Use add_test_sources in a CMakeLists.txt to add additional
tests.
Added scaffolding for unit tests

The mingw setup script now also installs the Google Test
framework. You can also set the GOOGLE_TEST_DIR CMAke cache
variable to point to your Google Test source directory.

Thrive is now separated into a dynamic library and the main
executable to facilitate testing. The Main.cpp file is now
located directly in the src directory to reflect this.

Use add_test_sources in a CMakeLists.txt to add additional
tests.
Added src directory to include path

This allows for more natural includes without crazy relative
paths.
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