Added new travis test runs that use yajl, multi_json and uuidtools

We have a few extra code paths that will only be activated if we use
one of these gems. Adding them to the build matrix should cover those
cases with all the tests in the regular test suite.
Made sure gemfiles point to the gemspec in the root directory

Previously travis was failing because it was looking for a gemspec in
the gemfiles directory
Made sure strings in .travis.yml are quoted the same way
Reduced the build matrix slightly by only testing the latest release of
ruby 2.1
Made some minor tweaks to the common test suite to make it easier to
understand failures
Made yajl raise an exception if it fails to parse

By default it returns nil, but unfortunately json-schema expects failure
to result in an exception. If nil is returned it's treated as a valid
result and is used. In the case of initialize_data this is a problem
because it overwrites the data passed in with nil
Restricted travis to only run all combinations of optional gems on the
latest version of ruby

Should make the build faster
Merge pull request #157 from iainbeeston/test_optional_gems

Add yajl, multi_json and uuidtools to travis