Fixing pointers with the magic of C++11 (part 1)

Replaced all occurrences of NULL with nullptr, except in third-party
code (LuaWrapper, JsonCpp, TinyXml).

Started conversion of naked pointers in app to std::unique_ptr where
possible, and std::shared_ptr where otherwise appropriate.
Converting Resource types, Tasks to use shared_ptr

ResourceLoader now only creates and returns shared_ptr instances.

Resource now inherits from enable_shared_from_this to allow resources
to operate on themselves (particularly Music/Sound, which are
inherently tied to global state since they rely on SDL_Mixer).

Tasks are also now created using shared_ptrs only, meaning we can
remove the self-destruct code inside the Task object.
Converting Scheduler and ScriptEngine to use smart pointers
Switching to lambdas in A* and Aspect validation algorithms
Converting DialogueController to use smart pointers