Placement option

Introduce a placement option, like `top` or `bottom`. Only those two are implemented, although it should be easy to take this further and do `left` and `right`. Also, if there is no space to display at that side of the triggering element, choose the opposite side.

Unit tests included.