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
static: remove native impl of nest

nest can be expressed using chain and sequence, so just use that
implementation instead of the native one.
static: fix index issues with static

When using static, operators that are nested below it do not receive the
proper index and associated datum. This is because static requires,
conceptually, a new data bind that will not preserve the index of the
context.

In order to preserve the index, static iterates over the elements of the
context selection, which also provides each element's index in the
context selection. The coditional element creation logic is run, and
then the selection continuation is run on the result, except the index
of the parent element is passed to the continuation. This will be
propagated through to all other operators below the static operation.
Fix D3 version
Operators return optional strings

For those operators that are setting some attribute-like thing–i.e.
attr, style, and property–there must be a way to completely clear the
value. In JavaScript, you accomplish this by using the null value. In
Elm, this corresponds to a Maybe type.

Uses of thse functions that used to look like this:

  attr "class" (\d i -> "cls-" ++ show i)

should be updated to look like this

  fun attr "class" (\d i -> "cls-" ++ show i)

Previous uses of fun, should be replaced with opt. Uses of num and str
are unaffected.
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.