Add ability to create functional blocks

A bunch of work so that we can have blocks like this:
![image](https://cloud.githubusercontent.com/assets/1767466/4449930/291650d6-4820-11e4-9dcd-a530e35b91e0.png)

Previously blockly-core supported inline inputs or non-inlined inputs, but you couldn't have mixed (note plain text is generally a dummy input with a title). This makes it so that we can.

Some of these changes are just moving stuff around to make things more readable/understandable (imo). Right now, functional blocks are able to use the exact same codepath as regular blocks. We may want to change this in the future if we try to add more fancy coloring.

One of the more noteworthy changes is that Inputs now have an inline property. This value is only used when block.inputsInline is false. Calling input.setInline(true) will make it so that the input is on the same line as the previous input.

I've looked at a bunch of existing blocks on my localhost to make sure this doesn't break them.  If you know of any edge cases I should check out, let me know. The new block is not currently exposed anywhere, but I plan to create a levelbuilder level that uses it.
:rocket: