Prompt functionality

Re-implemented most of the prompt features while better handling the dom, events and listeners. The canvas now more cleanly works directly with shapes and limited caching.