Move frontends, refactor pretty-printers and positions

- plugin/ becomes frontends/scalac/

- All trees(Definitions, Identifiers, Expr) extend Tree, pretty-printer prints Trees.

- Pretty-printer passes context information to have finer-grained printing, especially for ScalaPrinter w.r.t parentheses and braces.

- Positions are decoupled objects, available in all Trees (not necessarily defined), introduce RangePositions and extract range positions from most scalac trees.