Architectural changes to support TCP connection.

AbstractCommunicator.java:
- host Connection object (was in concrete class)
- add list for all known connection types
- implement a common opencomm to choose the correct connection according to port name
- implement a common close

GrblCommunicator.java, TinyGCommunicator.java:
- move Connection objects to super class
- call superclass to open/close port
- avoid defining Connections here (done in common abstract open code)

GrblController.java, TinyGController.java, AbstractController.java:
- avoid implementing connections in constructors

MockConnection.java:
- apply interface rename

Connection.java:
- turn interface into abstract class
- host common dependency injection code
- add port detection method
- rename port methods

SerialConnection.java:
- remove dependency injection code
- deprecate line terminator to let main developer check it's really necessary
- add port detection method
Fixed unit tests and some other misc things.