perf(infiniteScroll): Use isolate scope

- Change to use isolate scope with & binding
Allow to add custom CSS class to popup
[Bug] Default value overwrites the option's value.
Added unit test
Update platform.js

This is returning a number rather than a string. Not sure if the doc or the code is incorrect. To return a String you'd need to return device().v instead of device().version.
fix(navButtons): correct show/hide
Adding sass variables for footer, subfooter and subheader heights
Allowing to footers and subheader with diferent height.

FIX #2334
adding tests for both subheaders and subfooters
fix(tabs): wrap inline tab content

Closes #2637
fix(collectionRepeat): rerender after resize/enter

Previously on every `beforeEnter`, collection-repeats within a
ion-nav-view would rerender. However, this is only necessary when the
window resizes. The rerender already works when the collection-repeat
is within the active view because the scroll view has accurate
dimensions. But when the collection-repeat is within a cached view it
does not have dimensions, causing the rerender to incorrectly place its
items. This update will only rerender the collection-repeat if there
was a window resize, and the scroll view which the collection-repeat
was in, did not have dimensions at the time of the resize. If/when the
view becomes the active view again, the collection-repeat will rerender
on `afterEnter` when the scroll view has accurate dimensions.
refactor(slideBox): properly use size of parent, perf increase
chore(tab): do not add .pane to ion-nav-view tab
style(slidebox): make sure next/prev slides are at top
fix(popup): add animation keyframes
fix(view): digest view scope before transition
style(slideBox): cleanup unused vars
fix(menuClose): expire nextViewOptions
fix(scrollView): fix null pointer exception on scrollbar
fix(collectionRepeat): parse collection-item-height/width to int

Closes #2633.
amend(slideBox): when changing by >=2 slides, transition correctly