Improve ruby variables and symbols parsing rules

For local variables, instance variables and classe variables:
  - can't include a `?` nor a `!`
  - can't start by a digit
 
For global variables:
  - can't include a `?` nor a `!`
  - can't start by a digit
  - except for match variables (e.g. `$1`, `$2`, `$42`) which are full digits
  - expect for some special variables (e.g. `$$`, `$!`, `$,`)

For symbols:
  - can be operators (e.g `:+`, `:/`, `:-`, `:>>`)
  - start with `@` or `$`
  - end with `!`, `?` or `=`
  - can't start by a digit

For symbols defined in reverse as hash keys (e.g {foo: 'bar'}):

  - can only start with `[a-zA-Z\_]`
  - can't end with `=`