string_ref: add types to match N3762
string_ref: add BOOST_NOEXCEPT to member functions per N3762

Note that some of these functions invoke other functions that are not
marked noexcept (e.g., std::distance, traits::find).  This is OK; it
just means if those functions do throw an exception (in C++11 mode) then
std::terminate() will be invoked.
string_ref: fix strict conformance of member clear()

Semantics is to be equivalent to assigning from a newly
default-constructed instance, which means data() should be reset.  (That
data() can return NULL is a different bug; here we're fixing clear().)
string_ref: implement member copy()
fix #9518: string_ref::rfind return value offset

Return value is offset by the length of the match minus one.
string_ref: add default pos arguments per N3762
string_ref: implement member swap()
string_ref: implement missing member compare() overloads

Interface and correctness now; optimize later.