Functional blocks

Most of this diff is moving stuff around and/or renaming things in a way that makes them more clear to me.
![image](https://cloud.githubusercontent.com/assets/1767466/4599998/98114d90-50ce-11e4-8f23-98fefd154d3f.png)

The second part (commit #2) makes it so that when you try to replace the - block with the * block, it will properly move out the - block.

The reason this didn't work before is because there's some opportunity for confusion for how things are organized right now. Block connections have types (i.e. like next_statement, previous_statement, input_value, output value). These are used to ensure connections only matchup with other connections of the right type. Blocks then also have a set of connections (nextConnection, outputConnection, previousConnection) used to point at particular connections. These are also used to determine how to draw the block.

When I added the functional_input/output, I want it behaving like the existing input/output connections in some senses (i.e. inputs are drawn internal to the block, output represents the result of processing the block). However, I want it drawn more like next/previous connections. I accomplished this by having the block have a previousConnection of type FUNCTIONAL_OUTPUT, whereas before previousConnections would always be PREVIOUS_STATEMENT.

There might be opportunity to clean up some of that confusion in the future.
This comment suggests that given the blocks
(and A B), (not _) 
if the "not" block is dragged onto the location of the "A" block, then you'd end up with:
(and (not A) B)
i.e. because the "not" operator has only one connection point that will accept the orphaned block. is that correct? FWIW this appears to be how it works with logical operators today:
![screen shot 2014-10-13 at 2 06 41 pm](https://cloud.githubusercontent.com/assets/8001765/4620191/3f8d0604-531d-11e4-91e4-1aa8d32edeef.png)