ScreenNavigation::open_screen refactored, more tests

* Refactors the `#open_screen` method into smaller, more easier tested methods
* Adds tests for `#add` & `#remove` for views
* Adds tests for opening & closing screens
* Stubbed tests for tab bar, bit complex to test at the moment, might go with a UI acceptance test instead of unit testing, not sure.