Separate BlockState from Block more clearly

Remove 'extends BlockState' from Block and BlockSnapshot
Add getter for BlockState
Move getSnapshot to Block