Turn Retro.Environment into an interface.

Part of #5
Use the new Environment interface in Core and the demo.

Fixes #5