add ArraySquareBraceTransformer

add ArraySquareBraceTransformer

Resolve #913

- [X] tests
- [X] skeleton
- [x] implementation
- [x] update Tokenizer
- [X] update Fixers
- [x] rebase after merge of #917
No need for protected, it should be private. We keep as much private in this project as possible.

Putting it as private property will encapsulate it at class level, now we encapsulate it on method level.
And, what more, we won't initialize it if we don't call that method.

So I can see 2 benefits for hiding it as static variable inside method ;)