[ruby mode] Various improvements

* Handle default string % literal for Ruby

  %{Hello World} == %q{Hello World}

  One gotcha though:

  5%(2) == 5 % 2

  Will be seen as a string, but it will be interpreted
  as the modulo operator by ruby.

* Variables names can't include a ? nor a !

* Improve symbols parsing rules

  - can be operators (e.g :+, :/, :-, :>>)
  - start with @ or $
  - end with !, ? or =
  - can't start by a digit

  Though when defined in reverse as hash keys (e.g {foo: 'bar'})

  - can only start with [a-zA-Z\_]
  - can't end with =

* Instance and class variables can't start by a digit but globals can be only digits

* Add some missing keywords

  Actually only __END__ is really a keyword.
  But __FILE__, __LINE__ and __dir__ are special variables so most editors highlight them as keywords.

* Several regexp improvements

  - Use the string-2 class for regexps like JS mode
  - Xonsider %r as a regexp
  - Handle interpolation inside regexps

  It allow to colorize properly stuffs like:

  ```ruby
/foo #{1 + 2}/
%r{foo #{@bar} baz}
```

* Fix parsing of brace enclosed string literals with interpolation

  As an example:

  ```ruby
%Q{foo #{42} baz #{26} fizz}
```
  The coloration was broken after the first interpolation.