Merlin_recover: move EOF to next line

This helps completion: instead of making merlin thinks the cursor is
outside the buffer/typedtree when starting completion at EOF, it now
thinks that there is always one more buffer line and will complete in
the appropriate context.
Type_utils: special handling for module types (#261)
reconstruct_identifier: fix handling of path with LIDENT

Interpreting an OCaml identifier out of context is a bit ambiguous.

A prefix of the form (UIDENT DOT)* is the module path,
A UIDENT suffix is either a module name, a module type name (in case the
whole path is a module path), or a value constructor.
A LIDENT suffix is either a value name, a type constructor or a module
type name.
A LPAREN OPERATOR RPAREN suffix is a value name (and soon, maybe a
value constructor if beginning by ':' ?!) .

In the middle, LIDENT DOT (UIDENT DOT)* is projection of the field of a
record.  In this case, merlin will drop everything up to the first
UIDENT and complete in the scope of the (UIDENT DOT)* interpreted as a
module path.
Soon, the last UIDENT might also be the type of an inline record.
(Module2.f.Module1.A <- type of the record of the value constructor named A of
type f, defined in Module1 and aliased in Module2, pfffff).