Add allocator support to StringMaker<vector>

 - also extracted out 'rangeToString', in an attempt to make it easier
   to add support for other containers
catch_tostring : moved defintion of rangeToString

 Detail::rangeToString is now defined after the various toString
overloads. This results in them being accessible with rangeToString is
instantiated (in this case, by StringMaker<vector>). This (sort-of)
fixes the problem where contained types are toString'd incorrectly.

Consider:
  std::vector<std::string> v { "abc" };

Before:
  Catch::toString( v ) == "{ abc }"
After:
  Catch::toString( v ) == "{ "abc" }"

(note the extra pair of quotes around the "abc" - these are added by
Catch::toString( std::string ) which is now called by rangeToString)
updated single-include version
Merge pull request #198 from PureAbstract/vector_to_string

Add allocator support to StringMaker<vector>