Cache atoms to avoid redundant requests

- Once cached we really don't need to send InternAtom and AtonName requests, so
  we bypass them.
- Issue #22.