Relative directories for gruntfile destination, onsave grunt task specification, preferences dialog

Hi,

I found your grunt plugin for brackets and added a few extra pieces of functionality to enhance it to suit my requirements, which I figured I should share back with you.

I've tried to preserve existing code styles, structure, as well as preference names. Let me know if i've got any of it wrong :)

To summarise the changes:

1. My current project has my gruntfile existing outside of the brackets project scope (For legacy reasons), so I added a call to path.normalise to the GruntDomain commands for runTask and getTasks so that the preference for specifying a subdirectory for the gruntfile could cope with going up directories as well.

2. I added a new preference so that a grunt task can be specified to be ran when a document is saved. This is useful for at least my project as it means I can quickly push changes out to the staging directory. I realise Brackets has live preview but on some projects that isn't necessarily an option.

3. After adding the new preferences, I took the liberty of creating a small preferences dialog so that users can modify the preferences without having to modify the core JSON file.

Thanks,
Matt Harker.