Split watch tasks to avoid unncessary minification
Assign livereload ports dynamically
Add grunt-concurrent to launch multiple watches
Add grunt:reloader task for livereloading watches
Refactor Gruntfile