Convert data into newtype where applicable

Use newtypes instead of data declarations where possibel to save on
runtime overhead.
Add basic profiling support to cabal file

Unfortunately, cabal-1.16 has a nasty bug where it ignores
ghc-prof-options on executables[0] even when executable-profiling is
enabled. Hence, to actually make use of this, you have to use
cabal-1.18. Apart from this, however, cabal-1.10 is more than enough,
so we don't actually depend on a later version.

[0] - https://github.com/haskell/cabal/issues/1199
Factor out OWL2 AST

Move the OWL2 abstract syntax tree into its own module. This has the
neat effect of drastically shortening H.P.O.Functional's export list,
and also makes re-exporting the AST from H.Parser very easy.
Reindent countFromTo
Unroll inClass character range checks
Remove superfluous pack . unpack in fullIRI

export a non-unpacking version of showIRI to avoid unpacking and
repacking it unnecessary.

Signed-off-by: Maximilian Marx <mmarx@wh2.tu-dresden.de>
Straighten up whitespace handling

Do not look ahead for another delimiter if the preceding token was
already was a delimiter. In skipSpaceOrComment, if the initial
whitespace is not followed by the start of a comment, there is no more
whitespace to skip, so don't try to.
Streamline bracketed

In bracketed, we already expect the next token after the tag to be a
delimiter, so we don't need lookahead to determine if whitespace
skipping is optional.
Move comment down
Unfold iUnreserved and ipChar
Replace single-character inClass by char
Bump text and attoparsec, enable -O2
Reduce allocations in Hazel.Parser.OWL.RFC3897
Replace peekChar by peekChar'

If we don't expect end-of-input, we can use peekChar' instead, which
will simply fail at EOI, instead of using the more costly peekChar.
Use lookahead to reduce backtracking in iri and classExpression
hazel.cabal
Merge remote-tracking branch 'remotes/max/optimize-parser' into fd/conversion
Revert "Replace peekChar by peekChar'"

This reverts commit dea87da2531e9acb06d8dc7ef63f3964a61aef81.
overloaded strings
command line interface now parses, normalizes and performs completion