Issue #32 Add a CFG (Control Flow Graph) builder

Replaced managing separately CFGBasicBlock liveBasicBlock and List<CFGEdgeBuilder> liveEdges by managing them together via the single LivenessState class.

CFGBuilder.java:
Extracted parameter object LivenessState to encapsulate CFGBasicBlock liveBasicBlock and List<CFGEdgeBuilder> liveEdges + used it in all buildCFG(*) methods instead of passing two parameters and also used it as a return value.
Removed newList() method.
Now everywhere GFGEdgeBuilder.withTarget() is called, also remove the CFGEdgeBuilder from the collection containing it.
In buildCFG(MethodDeclaration), called buildEdges().
In several buildCFG(*), call LivenessState.copyLiveBasicBlock() before returning to ensure the next statement will create a new CFGBasicBlock. This replaces doing "nextStmtBasicBlock = null;" in buildCFG(List<Statement>, LivenessState).

SwitchSample.dot:
Consequence of fixing a bug where break statements had their own basic blocks (in this test anyway).
Issue #32 Add a CFG (Control Flow Graph) builder

Put in place the necessary change if I want to switch from displaying line+column in the *.dot file to displaying the start position of the node.

LineAndColumn.java: ADDED

CFGBasicBlock.java:
Replaced line and colum fields by LineAndColumn field.
Now implements Comparable.
Added appendDotNodeSourcePosition().

CFGDotPrinter.java:
Consequence of the change to CFGBasicBlock: removed Comparator implementation.
In appendDotNode(), called CFGBasicBlock.appendDotNodeSourcePosition().

CFGBuilder.java:
Extracted constant for the NEWLINE pattern.
Used LineAndColumn.