feat(tooltip): support more positioning options

This changes moves logic of relative positioning of 2 elements out of the tooltip. There are several goals of this refactoring:
* easily test positioning computations
* re-use positioning logic in different directives (tooltips but also date / time picker and typeahead)
* add more positioning options to the mentioned directives
* build on top of this common service to add even more positioning options (for example, those aware of the viewport size)

@bekos would be awesome if you could have a look at this one and let me know if the API would work for you in date / time pickers.