fix($tooltip): fix positioning issues in tooltips and popovers

To calculate the relative position of the tooltip or popover, the
$tooltip service now uses the $position service, which resolves many
positioning bugs.

Closes #265, #115
feat($tooltip): support for custom triggers

The `$tooltip` service now has two ways to customize the default triggers.
The `$tooltipProvider` takes a `trigger` option and the `*-trigger`
attribute can be applied to a single element.

The `$tooltipProvider`'s `trigger` option overwrites the default value
but the attribute will overwrite both.

A few logical default triggers are supported out of the box and have an
associated map to determine which hide trigger to use. `mouseenter` ->
`mouseleave`, `focus` -> `blur`, and `click` -> `click`. If any other
trigger is provided, it will be used to both show and hide the tooltip.

Custom hide triggers are not yet supported as they would require some
code trickery due to the way `$observe` works.

Closes #131
chore(build): properly generate depndencies on tpl modules

Closes #365
chore(release): 0.3.0
chore(release): starting 0.4.0
fix(tooltip): fix positioning error when appendToBody is set to true

Closes #387

use offset function instead position function when appednToBody is set to true
fix(tooltip): close tooltips appended to body on location change

Closes #345
chore(build): Use grunt-karma for testing
feat(tabs): Change directive name, add features

* Rename 'tabs' directive to 'tabset', and 'pane' directive to 'tab'.
 The new syntax is more intuitive; The word pane does not obviously
 represent a subset of a tab group. (Closes #186)
* Add 'tab-heading' directive, which is a child of a 'tab'. Allows
HTML in tab headings. (Closes #124)
* Add option for a 'select' attribute callback when a tab is selected.
 (Closes #141)
* Tabs transclude to title elements instead of content elements. Now the
 ordering of tab titles is always correct. (Closes #153)

BREAKING CHANGE: The 'tabs' directive has been renamed to 'tabset', and
 the 'pane' directive has been renamed to 'tab'.

    To migrate your code, follow the example below.

    Before:

    <tabs>
      <pane heading="one">
        First Content
      </pane>
      <pane ng-repeat="apple in basket" heading="{{apple.heading}}">
        {{apple.content}}
      </pane>
    </tabs>

    After:

    <tabset>
      <tab heading="one">
        First Content
      </tab>
      <tab ng-repeat="apple in basket" heading="{{apple.heading}}">
        {{apple.content}}
      </tab>
    </tabset>
fix(tooltip): tooltips will hide on scope.$destroy

When an element on which the tooltip is applied is destroyed (along with
its scope), the tooltip popup will now be closed if it was open.

Also refactored the $locationChangeSuccess binding as well to not waste
a run of `hide()` unless the tooltip was already open, following the
same pattern used in this bug fix.

Closes #410.
fix(dialog): remove dialogOpenClass to get in line with v2.3
feat(datepicker): add datepicker directive

Closes #366
style(modal): Use 'h3' tag in template instead of 'h1'
demo(modal): Use 'h3' tag in template instead of 'h1'
docs(dialog): document dialogFadere option instead of non-existing modalFade option
style(dialog): use double quotes around HTML attribute value
chore(*): normalize line endings

Closes #423
feat(pagination): option for different mode when maxSize

 * Allow user to specify if current page is rotated, moving the left/right
   limit, or page is moving between page groups.
refactor(datepicker): inject dateFilter instead of $filter
feat(tabs): support disabled state