GenericValue: accept different allocators for read-only access

Several GenericValue functions take a const-reference to another GenericValue
only.  These functions can safely accept values with a different allocator
type.

The following functions are therefore extended by a SourceAllocator template
parameter in this commit:

 - operator==/!=/[]
 - HasMember, FindMember, RemoveMember
 - StringEqual
GenericValue: add and use IsGenericValue meta function

This commit adds an IsGenericValue meta function to match arbitrary
instantiations of the GenericValue template (or derived classes).

This meta function is used in the SFINAE-checks to avoid matching
the generic APIs (operator=,==,!=; AddMember, PushBack) for instances
of the main template.  This avoids ambiguities with the GenericValue
overloads.
valuetest: always test comparisons with different allocators
GenericValue: add explicit operator!=(const Ch*)

MSVC'2005 needs an explicit overload for operator!=(const Ch*)
after the addition of the IsGenericValue SFINAE restrictions.
valuetest: test member operations with different allocators
valuetest: more testing of MemberCount
unittest.h: simplify AssertException

Some compilers warn about the missing initialisation of the std::exception
base class of the AssertException helper.  The simplest solution is to
inherit from std::logic_error instead, which provides all of the required
functionality already.
GenericValue: add move constructor/move assignment

When C++11 is enabled, several algorithms will fail, if GenericValue is
neither copyable, nor movable.

Cherry-picked from 8005b55.
always include "meta.h", as it is not only used for member iterators
meta.h: disallow direct inclusion
rapidjson.h: add RAPIDJSON_GNUC as GCC version shortcut
detect rvalue reference support (RAPIDJSON_HAS_CXX11_RVALUE_REFS)
always define RAPIDJSON_HAS_STDSTRING (default: 0)
valuetest: avoid underscores in GoogleTest tests

See https://code.google.com/p/googletest/wiki/FAQ#Why_should_not_test_case_names_and_test_names_contain_underscore
GenericValue: add rvalue-ref overloads to AddMember/PushBack

Directly allows temporary GenericValues as parameters:
  v.AddMember("foo", Value(s.c_str(),alloc), alloc);
valuetest: add tests for rvalue references, reenable erase/remove pattern
GenericValue: add RAPIDJSON_NOEXCEPT

Added basic detection of `noexcept` support for some compilers, added
corresponding RAPIDJSON_NOEXCEPT annotations to
 * non-allocating constructors
 * (move) assignment
 * Swap
GenericValue: add some more RAPIDJSON_NOEXCEPT

 * Move()
 * RawAssign()
 * SetStringRaw()
GenericStringRef: add NOEXCEPT, add ASSERT

 * constructor from array is RAPIDJSON_NOEXCEPT
 * constructor from plain pointer missed an assert
GenericValue: reduce growth factor for array/object reallocations

As mentioned by @kosta-github in http://git.io/0gkYSg, the currently
used growth factor of 2 is suboptimal for memory performance.  An
extensive discussion can be found at [1].

This patch reduces the array/object capacity growth factor to 1.5, as
many C++ implementations have chosen to use.  In order to avoid
floating-point arithmetics for computing the new capacity, I did not
add any customization parameter for the factor and used a shift+add
instead.

[1] https://github.com/facebook/folly/blob/master/folly/docs/FBVector.md