Added virtual destructors to exception classes

They should probably have these, though I shudder to think of an
exception that needs a destructor.
Exception is now derived from std::exception