Add Stack::ShrinkToFit() and some refactoring.

Lazy allocation. (so Document not for parsing don't need to allocate
stack).
Remove redundant stackCapacity member variable.
Change Reader/Writer's stack allocator to CrtAllocator
Add ShrinkToFit() to StringBuffer and MemoryBuffer
Separate Document's value and stack allocator.

Use CrtAllocator for stack.
ShrinkToFit stack after parsing.
Fix a gcc compilation error
Merge pull request #105 from miloyip/MemoryOptimization

Memory optimization
add Doxygen documentation for configuration macros
add Doxygen documentation for error handling customization
Merge pull request #106 from pah/doc/config-error

Add Doxygen documentation for configuration macros and error handling
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