add support for type definitions (-type, -opaque)

the entire type language spec is supported in both type
definitions and record field type declarations.
this commit also fixes the bad number highlighting
remove the -module attribute from Goto Symbol
add type symbols to the symbol list
add support for -export_type
add support for type specifications (-spec)
disallow space character between '-' and the attribute name

this commit also removes all left-over occurences of *+ and ++ inside of
the regular expressions
add snippets for -type and -opaque (triggers: -ty, -opa)
exclude module name from symbol list
fix multi-clause fun highlighting
fix highlighting of atoms that start with "fun" (moar \b)
remove superfluous space in -ifdef, -ifndef, -import, -undef snippets
improve indentation rules for '->' and 'after' (closes #1)
improve preprocessor directive highlighting
highlight macro usage as 'keyword.other.macro.erlang'

i think that 'keyword.other' fits a lot better
than 'entity.name.function' (the previous selector)
especially since QuickCheck uses them as control structures,
but it's a debatable change
fix highlighting of specs with brackets and comment usage in records
add completions for guard functions and builtin types
various highlighting consistency fixes

- variable type specifications (X :: foo()) are recognized anywhere in a type expression
- '->', '::'' are consistently highlighted as punctuation
small typo
add completions for common entities
make guard function completion available in expression guards