Made the util::Dir append function const safe
Added const specifier to asset_dir argument of audio_manager's
load_resources method
Implemented JobManager to load gamedata resources

The game loads straight away without waiting to load the gamedata and
once the data is loaded continues to behave as it has been doing before
this commit.
Fixed the intialization reorder compiler warning
util (crossplatform): added subprocess and os files

main methods are:

subprocess::call       (can redirect output and behave in a blocking/non-blocking way)
subprocess::which      (searches for a binary in PATH)
os::execute_file       (calls xdg-open on file)
os::self_exec_filename (readlink /proc/self/exe)
buildsystem: added options system, gperftools

options system:

./configure (usage with --with and --without)
./CMakeLists.txt (specification)
buildsystem/version.cmake (bookkeeping; see 'log_config_option')

the list of enabled options is available in config_option_string in config.h

gperftools:

first option that's using the new system;

gperftools-profiler is automatically linked in if it exists (disable with --without)
gperftools-tcmalloc must be manually enabled (with --with)
buildsystem: fixed verbosity issue with Makefile
added config options to version display

made engine fonts unique_ptrs
buildsystem: made inotify optionally toggleable

use ./configure --without inotify
util: integrated profiler into game_main

press F12 to start/stop profiling
buildsystem: added config.cpp (in addition to config.h)
buildsystem: put Inotify detection into module
buildsystem: made --with switches tri-state (yes, no, auto)
Merge pull request #157 from mic-e/profiling

Added gperftools profiler, buildsystem options, some utilities
Merge branch 'master' into gamedata-job

Conflicts:
	copying.md
	cpp/game_main.h
Made the on_gamedata_loaded function accept reference to gamedata
Made GameMain a friend of Engine

This can be removed once all the components have been properly moved
from GameMain.
Showing a text saying that the gamedata is loading
Merge pull request #137 from jprashanth/gamedata-job

Fixes #70
 Units created as a general game object class
-- Units have a stack of actions
-- the top action decides the graphic and change of state
-- Units have abilities (abilities create actions)

The unit movement uses path finding
-- pathfinding initiated with start and end tiles
-- a star takes a lambda function to decide what is passable
-- if blocked a unit finds a new path
-- intersection tests for many units on a single tile
-- ending at the nearest reachable point when cannot reach target

Terrain object split over several classes
-- terrain object will represent a space on the terrain
-- there are square spaces and radial spaces
-- the building specific items are moved to the BuildingProducer class

Units have outlines on terrain
-- generated on startup
-- squares made using foundation size of building
-- circles made using radius of units