Support quoted names for functions, records, etc.

When function or record names contain characters other than `[a-zA-Z0-9@_]`, it necessary to enclose them in quotes, exactly like it is with atoms.
Improve matching of types/specs.

- The parentheses after some directives, e.g. the -spec directive can be omitted, however the directive would then be highlighted as an atom.

``` erlang
-spec(foo() -> { ok, bar }).  % spec is highlighted
-spec foo() -> { ok, bar }.   % spec is not highlighted, though it is perfectly valid
```
- Defining record types, the `::` operator was not recognized, and types were only recognized, if defaults were set:

``` erlang
-record({
  foo = default :: atom()  % atom() is highlighted as a function/type
  bar :: atom()            % atom() is not highlighted
})
```
Add bytes|bitstring|bits types to grammar.

Added missing type `bitstring` + abbreviation `bits`, as well as the abbreviation for `binary` which is `bytes`.

Source: http://www.erlang.org/doc/programming_examples/bit_syntax.html
Added behaviour directive matching.

Match `behaviour` directive exactly like the `module` directive, since it is within a similar context.

Source: http://www.erlang.org/doc/design_principles/des_princ.html#id59741