Make sure tabs are registered on first run.

Also, minor refactoring to abstract callback functions.
Make sure attributes object exists before writing to  it.
Watch for tab creation.
Throw some exceptions if attempts are made to work with tabs that don't exist.
Merge branch 'master' of github.com:drzax/chrome-tab-registry