Implement Simulator class

Includes:
- event handler delegate
- refactoring Program class to accomodate simulator events