fix(datepicker): fix empty value parsing and validation

In AngularJS 1.3, if the $parsers callback returns an 'undefined' value, it causes the ngModelController to invalidate the ngModel and not run the validators. When the input is an empty string, the $parsers callback was changed to return 'null' instead of 'undefined', so we consider an empty string a valid value and allow for other validators to run and check the value.

This means a BREAKING CHANGE from previous versions, because the model value for an empty input is no longer 'undefined' but is now 'null'.
fix(timepicker): fix empty value parsing and validation

In AngularJS 1.3, if the $parsers callback returns an 'undefined' value, it causes the ngModelController to invalidate the ngModel and not run the validators. When the input is an empty string, the $parsers callback was changed to return 'null' instead of 'undefined', so we consider an empty string a valid value and allow for other validators to run and check the value.

This means a BREAKING CHANGE from previous versions, because the model value for an empty input is no longer 'undefined' but is now 'null'.
feat(tab): add bsActivePane attribute to bind active tab pane

Currently the tab directive is using ngModel to bind the active pane index. This causes the tab control to be included in the validation pipeline and when used inside a form, causes the form to be $dirty. (see issue #1233)

This commit deprecates usage of ngModel and adds a replacement bsActivePane attribute with the same functionality, so it should be a matter of replacing ngModel references with bsActivePane.
docs(tab): add bsActivePane helper attribute description
fix(tooltip): fix undefined element when triggering multiple times in fast sequence

Clicking multiple times fast on the dropdown button in docs was causing an exception because the element references were being cleaned up in 'hide' animation callback. When the show/hide calls were executed in specific timming, the 'hide' callback was being run after calling 'show' which caused the $isShown flag to be true but the element to be destroyed.

By calling 'destroyTipElement' only in 'show' before creating a new one, we avoid this issue with no noticable impact on allocated resources.