add simple isValid() function to PhantomNodes
implements output generation through a dedicated JSON container:

- JSON syntax is not scattered over several files, but one place
- Reduces code duplication
- breaking changes:
  - new property in json(p) formatted response: "found_alternative": True/False
  - returned filenames now response.js(on) or route.gpx
  - /hello plugin returns JSON now
adapt JSON parsing in tests to allow for omitted fields
remove some debug output
make comparsion explicitly unsigned
fix comparison
fix typo
refactor route name extraction into its own class, fix name extraction
clean up code a bit
store facade ptr in c'tor, save a param in sub-sequent function calls
move GetBearing(.) function into FixedPointCoordinate
flip bearings by 180
use trig functions from std namespace
move atan2 lookup into trig header
remove comment
minor code refactoring, wip
fixes issue #1019:

- fix ignored turn restriction on chains of degree-2 nodes
- add a cucumber test to test for potential regressions
use consistent typedef'ed types
replace boost::unordered_map, move hash function for pairs into its own header
remove superflous way in test setup