Raise an exception for invalid instance variable names

In Ruby, instance variables names can't start with a digit. Prior to this, it was possible to set/get/remove instance variables with invalid names, such as `@0`. As per MRI's behaviour, these names now cause a `NameError` to be raised.

An added bonus is that these names are now correctly recognised as invalid by `Symbol#is_ivar?`:

```RUBY
:"@0".is_ivar?
# => false
```