GenericValue: refactoring of operator==/!=

By restructuring the call forwarding of the various operator== and
operator!= overloads, new overloads can be added by simply adding an
additional member operator==.

Additionally, the "Ch*" overloads are dropped in favour of an SFINAE
version that removes the pointer variants from matching the templated
operator== (see also operator=).
GenericValue: add (optional) support for std::string

Some users may want to use RapidJSON with std::string objects.  This commits
adds an (opt-in) feature to include some basic support.  The implementation
uses std::basic_string<Ch> as generic string type.

Support currently covers:
 * construction
 * comparison

No special APIs for AddMember or PushBack have been added, as std::string
most probably requires copying (or an explicit StringRef() call).
add tests for RAPIDJSON_HAS_STDSTRING
.travis.yml: include RAPIDJSON_HAS_STDSTRING tests
Merge pull request #107 from pah/feature/basic_string

GenericValue: add optional support for std::string