Implement frames

This creates frames on the left side of the screen that each represent one code step. The frames update when the code changes, but the backend doesn't yet know how data flows between the frames.