Create Ripple SSL contexts using std::make_shared.
Enable std::array overloads for boost::asio on clang:
* Remove Boost config option from beast config.
* Define from compiler, or let Boost figure out itself.
Make streambuf buffers_type iterators default constructible
Add shared_ptr<boost::asio::ssl::context> to ssl_bundle:
This gives the ssl_bundle shared ownership of the underlying ssl context
so that ownership of the bundle may be transferred to other classes without
introduce lifetime issues.
Add [overlay] configuration section (experimental):
This configuration section uses the new BasicConfig interface that supports
key-value pairs in the section. Some exposition is added to the example cfg
file. The new settings for overlay are related to the Hub and Spoke feature
which is currently in development. Production servers should not set
these configuration options, they are clearly marked experimental in the
example cfg file.
Use _MSC_VER to detect Visual Studio
Add Section::name:
The Section object now stores its name for better diagnostic messages.
Use ssl_bundle in Overlay::Peer
Use shared_ptr to SSL context in Overlay:
These changes are a prerequisite for the universal port. They allow the
ssl_bundle to retain ownership of the SSL context via shared_ptr.
* Overlay uses shared_ptr to SSL context
* Removed undocumented PEER_SSL_CIPHER_LIST configuration setting
Refactor HTTP::Server to support Universal Port:
These changes are necessary to support the Universal port feature. Synopsis:

* Persist HTTP peer io_service::work lifetime:
This simplification eliminates any potential for bugs caused by incorrect
lifetime management of the io_service::work object.

* Restructure Door to prevent data races, and handle clean exit:
The Server, Door, Door::detector, and Peer objects work together to
correctly implement graceful stop and destructors that block until
all child objects have been destroyed.

Cleanups:
* De-pimpl HTTP::Server
* Rename ServerImpl data members
* Tidy up HTTP::Port interface