GenericValue: accept values with different allocators for read-only access

Several `GenericValue` functions take a const-reference to another `GenericValue` for read-access only.  These functions can safely accept values with a different allocator type. In this pull-request, the following functions are therefore extended by a `SourceAllocator` template parameter:
 - `operator==`/`!=`/`[]`
 - `HasMember`, `FindMember`, `RemoveMember`
 - `StringEqual`

Tested on:
 - MSVC 2005, 2008, 2013
 - GCC 4.4 – 4.9, Clang 3.4 – 3.6 (Linux)
 - GCC 4.3 (Cygwin)

As a minor change, the `AssertException` is simplified to inherit from [`std::logic_error`](http://www.cplusplus.com/reference/stdexcept/logic_error/) avoiding a warning on Cygwin about the missing initialisation of the `std::exception` base class in the copy constructor.