auth: Copying role exceptions cannot throw
auth: Copying role exceptions cannot throw

This is a small correctness change.

According to cppreference.com [1], derived classes of `std::exception`
are not permitted to throw exceptions when they are copied.

To satisfy this requirement for `auth::roles_argument_exception`, we
store exception members as `std::shared_ptr` which has a `noexcept` copy
ctor. Since exceptions can cross shards, we cannot use a
`seastar::shared_ptr`.

This change is motivated by #3021.

[1] http://en.cppreference.com/w/cpp/error/exception/exception

Signed-off-by: Jesse Haber-Kucharsky <526eadea4792054b99d5fa5dd6be9acdd76c5418@scylladb.com>
Message-Id: <7706df0c701b90e7cb309c84a86d9f813461e801.1512501024.git.526eadea4792054b99d5fa5dd6be9acdd76c5418@scylladb.com>

avikivity/scylla,avikivity/scylla,duarten/scylla,scylladb/scylla,scylladb/scylla,duarten/scylla,scylladb/scylla,duarten/scylla,scylladb/scylla,avikivity/scylla