Tab bar refactor

* Fixes issue #167
* Added PM::TabBarController
* Moved some PM::Tab methods into PM::TabBarController
* Moved some tab-related accessors into PM::Tab
* Allowed `open_tab` from AppDelegate and on the PM::TabBarController
directly
* Added tests
* Added a method: set_tab_bar_badge(number)
* Also fixed an error in the cell identifier creation code that was
creating too many identifiers

75 specifications (144 requirements), 0 failures, 0 errors