Simplified BaseIndent to use NotFollowedBy to find the last ``do`` of a line.
Removed the code that checks for do blocks, as it is redundant.

Fixed the while loops in HaskellIndent to check for the first line in a file.

Added some more comments documenting what's going on.
Initial attempt at handling let and let/in blocks.