Move stuff into core and separate integration tests

This is ahead of adding groovy step support, which will require a different
integration test project anyway as you can't have multiple cucumber backends
 in the same project.