fix(tagsInput): Set element's validity when options change

Set element's validity when minTags, maxTags and allowLeftoverText
options change. Other validation options don't need to be monitored
because they are only used upon some user interaction with the directive.

Closes #154
refactor(tagsInput): Add default values to all options

Add default values to all options so some parts of the code become a
bit simpler by not having to check for 'undefined' before using an option.
Introduce a MAX_SAFE_INTEGER constant to be used as an upper bound for
maxTags and maxLength options.
chore(build): Update build files [skip ci]
fix(autocomplete): Fix suggestion selection on touch devices

Perform suggestion selection on mouse click instead of mouse enter so
it works correctly on touch devices.

Close #142
test(tagsInput): Add missing test

Add missing test to ensure the model is correctly initialized.
chore(build): Update build files [skip ci]
feat(configuration): Add support for validation

Add support for custom validation so options can be validated when
they are loaded. If an option is deemed invalid, its default value
will be used instead (global first, local last).
feat(tagsInput): Add type option

Add a new 'type' option so the internal input element can customized.
Only a few values are currently supported: text, email and url. Due to
the use of the ti-bind-attrs directive, Angular will NOT process the
provided value and as a result of that no validation will be performed
whatsoever.

Closes #140.
chore(build): Update build files [skip ci]
fix(tagsInput): Prevent an empty tag from being added

Prevent an empty tag from being added when a certain combination of
validation options allows it, which can also set the input as invalid
in some cases.

Closes #172
chore(build): Update build files [skip ci]
refactor(grunt): Split Gruntfile,js into smaller files

Split Gruntfile.js into smaller, independent files in order to ease
maintenance.
chore(grunt): Set up Saucelabs task

Set up a new task to run all tests on Saucelabs.
chore(dependencies): Add karma-sauce-launcher [skip ci]
chore(karma): Set up tests to run on Opera
feat(autocomplete): Down arrow hotkey option to open suggestion box if not shown

Add the down arrow event as a hotkey that opens the suggestion box if the
suggestion box is not visible. This feature is important because it gives
the user a method for browsing the list of tags without needing to filter.

Closes #54
Merge PR #67
refactor(autocomplete): Rename showSuggestionOnDownkey as loadOnDownArrow

Rename the showSuggestionOnDownkey option as loadOnDownArrow and perform
other improvements on the code.
chore(build): Update build files [skip ci]
chore(travis): Add support for S3 deployment