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(tags Input): add support for pasting a collection of tags

This pullrequest adds functionality that allows a user to paste a
separated string instead of having to type all entries manually. the
pasted string will be parsed to tags and the invalid ones will be
discarded. The separators can be defined with the separatorList
attribute