Better handling of API error responses

Refactored API action invocation into a common method and added error
checking. An ApiError is now raised upon error responses.

Tokens are now cached locally to reduce redundant token requests. The
cache is emptied upon each successful login.

Ignoring Gemfile.lock, idiomatic in gem development.

Change-Id: Idfd09fb6bf3a77d1658e4615e4660702657fc2ca
Watching and unwatching pages

Implemented methods for watching and unwatching a page via the API.

Change-Id: I8202026ce2fb689a1f53dbcfc2c8729e5947dd79