Reverted state-marshalling

closes #68, see the discussion there. To be re-enabled when fixed
Simpler nstream interface
(Lexing.from_fun is specially intended for reading from channels, and does a lot of unnecessary string copies.
The files handled by ocp-indent aren't that big, using a single string may be better than copying every chunk many times)
todo: we may not need the full token strings at all, depending on the use-case (--numeric or normal). Very few rules scan the strings (comments/ocamldoc, operators), and only the first few characters, that may be kept in the tokens. Multi-line tokens may still be a problem.
Rewriting the library interface for more flexibility

* now cleaner functional interface, passing an acc along instead of side-effect only
* new Extended output constructor passing each construct individually to the user.
May even be used for syntax-highlighting with a few categorisation functions.
Documenting line numbers
Fixed new functions for inspecting stack in IndentBlock
IndentPrinter: make sure pr_nl is always called just before print_indent, on the same block
We can now be specific that the leading lines of a token will be given the last block, while the newline and indent in front of the token get the new block. This may be of importance for the new Extended interface
fix: stopping at EOF
... we have several kinds
Added a function to detect comments from the lib
Added the possibility to restart lexing from a position/offset
(untested)
Needed for checkpoints and partial reindentation
There is still a problem with ocamldoc content
It turns out that the output of the lexer is not enough, and may be ambiguous in some cases:
COMMENT, COMMENTCONT may mean a 'wrong' ocamldoc tag which caused the token to be split (eg '(* {v *)')
but it may also be caused by a legit COMMENTCONT meaning the end of an ocamldoc code block:
'(* {[ (* *) ]} *)' yields COMMENT, ODOC_CODE, COMMENT, COMMENTCONT
Fixed problems with crazy ocamldoc comments mixups
fix: tiny bug with multiple comments at end of block
Fixed bug of library function is_at_top for 2-keyword constructs
(module type, let module)
emacs mode: automatically disabling tabs mode