Fix tooltip positioning with regards to viewports

The getPosition function was simplified with a new function,
getViewportBounds, was added to specifically
tackle the cases where we’re looking for the viewport bounds.

‘absolute’ and ‘fixed’ tooltips are now matched against the screen
where other ones are made to fit inside the viewport element.
Never mind my previous comment, it's probably better (in order to be more consistent with the rest of the codebase) to switch to this instead:

```js
if (/absolute|fixed/.test(this.$element.css('position'))) {
  return this.getScreenSpaceBounds()
}
```