Remove virtual specifier from client_t functions

Makes no sense to have them virtual when this behavior isn't beneficial
or required for how the client is structured, especially considering
its destructor isn't virtual, so what's the point?
Make use of override for member function overrides

Totally did not notice this was added to C++11 until recently, but it's
surprisingly handy.
Wrap default case in braces

Aside from the break. It's a weird habit, but I like to have the break
following the closing brace of a case so it stands out as different
from the closing brace of the switch statement.
Re-enable exceptions.

Better to have them than not.
Remove autorelease macros.

Replaced with an autorelease function block. Ideally, this function
will get inlined, but if not, it's not a huge issue.