Issues/427 add edit image meta *** DO NOT MERGE ***

First pass (and work in progress) for adding the ability to edit image meta data, e.g. link, caption, etc.   Ready for your feedback!! 

### Points of interest!
- Adds two new JS libraries: underscore.js and shortcode.js (from core WordPress)
- Image parsing logic was borrowed and modified from wp core in order to be as consistent as possible with existing user expectations
- Adds a WPImageMeta convenience class as a simple holder for meta values. 
- Adds a simple modal to demo the edit feature. 

### TODOs
- There is some data sanitation and safety logic that needs to be implemented.
- There are some slight differences in the logic that parses out the image, and the logic that rebuilds it. These need to be made uniform. 
- Some meta values can be derived from other meta values so the total number can likely be reduced (by at least 2)

### Questions:
What are your thoughts on the best approach to the demo form? Its as simple as possible right now. 

### Misc:
I'm sure I'm forgetting something. :) 

@SergioEstevao @bummytime @diegoreymendez 



This is not really important, but it took me a while to understand that if the image has an `imageId` it means that it's still being uploaded.

So a few things:
- Are we a 100% sure that the image having an ID means it's being uploaded?  Is there a chance the user may add an ID to the image manually and then tap on it causing this code to trigger for a false positive?
- If the imageId is a 100% for uploads only, I'd add a local `BOOL` variable to make the code more readable such as:

```
BOOL imageIsBeingUploaded = imageId.length > 0;

if (imageIsBeingUploaded) {
    // etc
}
```