Merge pull request #1 from dlecocq/master

Support for `std::string` values in `std::map` values
Fix documentation
Added simpler way to declare serialization info:

      namespace ThorsAnvil { namespace Serialize { namespace Json {

      template<>
      class JsonSerializeTraits<MyClass>
      {
          typedef MyClass                                                        LocalType;
          typedef void                                                           ParentType;
          static ThorsAnvil::Serialize::Json::JsonSerializeType const  type    = Map;

          THORSANVIL_SERIALIZE_JsonAttribute(member1);
          THORSANVIL_SERIALIZE_JsonAttribute(member2);
          THORSANVIL_SERIALIZE_JsonAttribute(member3);
          typedef boost::mpl::vector<member1, member2, member3>   SerializeInfo;
       };

       }}}

Can now be replaced with:

    BUILD_SERIALIZE(void, MyClass, member1, member2, member3)
Updated documentation
Make sure it can be compiled in C++11 and C++03
Fix build processes vie MakeSimple

    The processes is dependant on prtability.h which is found in the build tools.
    So make sure we add the build tools directory.

    Note: You can not use the full build without running third/setup because
          this also builds unit test libraries.

    Test for existance of build dir
        If it does exist then do not get sub-modules as it is already there.
Updated Documentation and example
Update to use the latest build tools
Change __cplusplus usage

    The macro __cplusplus is broken in gcc
    So we use the macro DCLOUD_USE_CPLUSPLUS11 to check for C++11
Minor Fixes
Support single-member struct serialization

We encountered this bug when trying to serialize a struct that had just
a single member. To get a failing test going, we had to add some extra
compiler flags and were then able to get a fix together. Changes to other
Serialize files were just to resolve some of these errors, mostly for
unused parameters