make a copy of exception caught by pry and leave original intact.

pry adds behavior(methods) to the exception it returns at _pry_.last_exception
in a repl but when the exception has been passed along as a frozen object ruby
will raise an exception when tries to do that.

this commit changes that behavior so that the exception can be wrapped in an instance of
Pry::LastException who is a subclass of BasicObject. Pry::LastException is a copy&paste
of what was defined dynamically in pry_instance.rb and it allows for frozen exceptions
to remain frozen and still provides the methods pry dynamically defined on an exception
object before.