Enable custom buttons

This does two things:

* Abstracts the anchor form behaviors into something called a "subform" so additional subprompts can be added for other buttons.
* Enables mixing custom button objects with the button names in the options.buttons. See below for an example.

This should not change anything for existing users of the MediumEditor.

EXAMPLE:

```
            var medium_editor = new MediumEditor( 
                $('.thing'),
                {
                    firstHeader: 'h1',
                    secondHeader: 'h2',
                    buttons: [ 
                        'bold',
                        'italic',
                        'underline',
                        'header1',
                        'header2',
                        'quote',
                        {
                            name: 'textcolor',
                            button: '<button class="medium-editor-action medium-editor-action-textcolor" data-action="text-color" data-element="span"><img width="26" height="26" title="" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaBAMAAABbZFH9AAAAA3NCSVQICAjb4U/gAAAAD1BMVEX////yrkNYuVc+iszbUkvYqCwCAAAABXRSTlMA/////xzQJlIAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAWdEVYdENyZWF0aW9uIFRpbWUAMTAvMjUvMTMfeyRXAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAACBJREFUGJVjYMAHlECAQRAEBpyHD7iAAIMxCAw4DzcAAFXNITWrqdp5AAAAAElFTkSuQmCC" /></button>',
                            action: function(){

                                var mediumEditor = this;
                                var $colorPicker = $(".medium-editor-toolbar-form-textcolor", mediumEditor.toolbar);
                                if ($colorPicker.length < 1) {

                                    $colorPicker = $('<div class="medium-editor-toolbar-form-textcolor" id="medium-editor-toolbar-form-textcolor">' +
                                        '<button data-color="#333333" style="background-color: #333333"></button>' +
                                        '<button data-color="#58b957" style="background-color: #58b957"></button>' +
                                        '<button data-color="#db524b" style="background-color: #db524b"></button>' +
                                        '<button data-color="#3e8acc" style="background-color: #3e8acc"></button>' +
                                        '<button data-color="#f2ae43" style="background-color: #f2ae43"></button>' +
                                        '</div>');

                                    $(mediumEditor.toolbar)
                                        .append($colorPicker);

                                    $colorPicker.on( 'click', 'button', function(e) {
                                        e.preventDefault();
                                        e.stopPropagation();
                                        mediumEditor.hideVisibleSubForm();
                                        document.execCommand('foreColor', false, $(this).attr('data-color') );
                                    });
                                }
                                mediumEditor.showSubForm('textcolor');
                            }
                        }
                    ]
                }
            );
```