Refactor internal methods and add tests

Results:
- Follow Mirego’s coding guidelines
- Kind of self-document tokenizer regular expressions by building them with named variables
- Improve performance (tested with very non-scientific benchmarks)

API changes:
- We are now less strict about whitespace inside expressions
- Edge-case clarification:
  - When a translation has variables, passing a non-object to `t` will simply output the string
  - When a translation has variables, passing an empty object to `t` will replace variables with an empty string
Move single interpolation assertion to its own test
Merge pull request #4 from mirego/refactor/internal-methods

Refactor internal methods and add tests