Clean up the tabs directive

It's gone through many changes since Ionic started, so a fresh look at how it works and why look would be a good idea.

Below related issues in one list:

- [x] #634: tabsController is on `<ion-tabs>` scope, user can watch `selectedTab` or `getTabIndex(selectedTab)`
- [ ] #620, #395, #419 has-{tabs,header,footer,etc} css/js refactor
- [x] #334 fixed
- [x] #175 Use `tabsController.select` - it takes an index or a tab scope
- [x] #646 fixed

**wontfix**:

- [x] #647 cannot see a better way to do this one than what the user is doing, unless we move to element nav-items (which could be done later). Example: `<ion-tab><ion-tab-nav on-swipe-left="previousTab()"></ion-tab-nav></ion-tab>`