event: Stream type, and folde

A Stream is a Signal of events that can be created without providing a
default value. Instead, the folde function's accumulator is in essence
used as the default value.
event: Add handlers for all DOM 3 mouse events
Merge branch 'master' into event
event: update import syntax for latest Elm version
event: update mouse event handler to work with static

Also add an Int cast. Though it's a NOOP it's good hygiene and
future-proofing.
event: rename start to stream
event: add clicks example
event: add handlers for keyboard events
event: add handler for input event
event: property must return a JsonValue

Handling checkboxes properly requires that you set the `checked`
attribute of the DOM element to something that's either truthy or falsy,
but not `null`. D3 interprets a `null` value as a signal to delete the
property, i.e.,

  delete element.check

which will break the checkbox. That means that an option type as a
return type for property is not an option. The alternative is either a
custom type, or just use JsonValue, which will be a valid value for any
property.

Go with that, then.
events: add focus and blur handlers
event: add TodoMVC example

To build, use the following commands:

  make clean && make
  elm --make --src-dir=src `./scripts/build-flags` `./scripts/include-css examples/todo.css` examples/Todo.elm

Note that the generated code will depend on D3 on the internet. If you
have a local copy you'd like to use, set the D3 environment variable
with its location. Note that you should prefix its location with
file://.

If you're on a mac, open it using this command:

  open build/examples/Todo.html

Note that the toggle button the upper-left hasn't been implemeneted
because that is the most pointless thing you could possibly add to a
TODO list you would actually want to use.