Make Element a monad by adding map and flatMap.

This allows using for-comprehensions with Elements, e.g.
```scala
  val someDouble = continuous.Uniform(0.0, 2.0)
  val someInt = discrete.FromRange(3, 12)
  val tripleFun = someInt.map(_ * 3)
  val product2 = for (i <- tripleFun; d <- someDouble) yield (i * d)
```