feat(button): allow uncheckable radio button

Acts as a hybrid checkbox/radio-button, selecting exclusively among the button set, but also allowing the selected item to be unselected, leaving the button set without a selected item.

Closes #1760
feat(typeahead): add `aria-owns` & `aria-activedescendant` roles
fix(dropdown): do not call `on-toggle` initially

Closes #2021
fix(modal): give a reason of rejection when escape key pressed

Fixes #1956
Closes #1991
docs(typeahead): add `typeahead-on-select` callback parameters

Closes #2047
feat(datepicker): make widget accessible

 * keyboard navigation
 * WAI-ARIA roles
 * popup will close on escape on input or calendar
 * handle focus when closing popup

Closes #1922

BREAKING CHANGES: popup calendar does not open on input focus
feat(datepicker): full six-week calendar
refactor(timepicker): change variable usage
refactor(dropdown): do not stop event propagation

Fixes #1986
Closes #2076
feat(dateParser): add `dateParser` service

Closes #1874
fix(datepicker): parse input using dateParser

Fixes #1289
Closes #2085
demo(all): use protocol-less URLs

Fixes #2070
Closes #2068
refactor(modal): add class to element instead of template expression
feat(modal): support custom template for modal window

Closes #2057
fix(modal): prevent default event when closing via escape key

Fixes #1692
Closes #2087
feat(modal): support modal window sizes

Allows use of the size modifier classes shipped with Bootstrap 3.1
onwards. Specify either 'sm' or 'lg' to get a small/large modal dialog.
Defaults to normal size dialog if not specified.

Closes #2084
test(modal): add test for `controllerAs` syntax

Closes #2091
docs(modal): fix Markdown markup for augmented methods

Without leading and trailing blank lines, the source is not marked up
as a list.

Closes #2107
fix(dropdown): ensure `on-toggle` works when `is-open` is not used

This fixes an issue where on-toggle doesn't get called on the first
click if the is-open attribute is not used.

Closes #2121
feat(modal): improve accessibility - add role='dialog'