Introduce Move and State classes

This makes the code run a little bit faster. 

## Before this change (~7925 ms)
$ dart test/perft.dart
... 1434000.0 us.
... 3427000.0 us.
... 1697000.0 us.
... 1366500.0 us.

## After this change (~1191 ms)
$ dart test/perft.dart
... 524250.0 us.
... 348833.3333333333 us.
... 199090.9090909091 us.
... 118705.88235294117 us.

I promise I'll stop hacking on your code soon.