Fix beast::URL (RIPD-636)

When attempting to reconstitute a `beast::URL` into a string, the resulting URL will be wrong when the url contains a username, a query string or a fragment. The first commit does the minimal fixing necessary to get this working. 

The other two commits are *optional* refactoring work and not related to RIPD-636:

* Rebase `beast::URL` and `beast::ParsedURL` on top of `std::string` -- no more `beast::String`!
* Make `beast::URL::to_string` a free function and use ` = default` constructors and C++11 goodness.
* Fixes all the **Beast** call sites accordingly.
* Fixes all the **RippleD** call sites accordingly.

Reviews from @HowardHinnant, @vinniefalco and @ximinez.
Only checking the scheme. I suppose a URL without a scheme is invalid, and may as well be considered empty.