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 



So looking at the code here, it feels like it can be broken up a bit into smaller methods that make it clearer to the reader.

I'm not sure what the best way to break this method up would be, but I noticed there are a few comments in this method breaking up the code for the reader, so maybe those commentds can be "replaced" by methods?

A rough example of what I mean (even though my code makes no sense):

```javascript
// Generate the `a` element options, if they exist.
<code>
html = wp.html.string( options );
```

could **maybe** be replaced with something like:

```javascript
html = generateAElementOption(props);
```