Better API to catch remote exceptions

- Rename ErrorReply to RemoteError.
- Add __str__, __repr__ to RPCError for better message display.
- Allow catching remote exception by using RemoteError.<remote error class name>.
let's use another var name (e.g. type_name). Since this code is actually dealing with python types, shadowing the builtin is a bit confusing.