Grunt supports dynamic Livereload port specified in project.json