Abstract `haskell-ident-at-point' a little

`haskell-ident-at-point' is now defined in terms of
`haskell-ident-pos-at-point', so that other functions can get the
region of the point rather than the point itself. This is useful
sometimes.
Change haskell-presentation-mode to be a derived mode

The old minor mode approach was bad as it would lose the keybindings
and normal behaviour of a haskell-mode buffer which are actually quite
useful, e.g., for using the same keybinding to drill down into the
info of yet more types.

This shouldn't break anyone's setup, in fact, it should improve it.
Improve ident name detection in `haskell-process-do-info'

For some reason I'd written ^[a-z][A-Z] which obviously doesn't work
on constructor names, and ends up wrapping them in parens, e.g. (Foo),
which GHCi does not like. So now it's ^[a-zA-Z_].