Fix #788: Add typings and compiler support for TypedArrays

I think this is a non-optimal abstraction. `execute` and `baseTest` should not exist. Instead, the `when` and `unless` methods below should always use `true` instead of `execute` and `this` instead of `baseTest`. For example:
```scala
  def when(tag: String): Tagged =
    new Tagged(JasmineTestFramework.hasTag(tag), this)
```
Now, `Tagged` does not serve any purpose if its `execute` value is `true`. In that case, it is only a proxy to its `baseTest`, hence it can simply be *replaced* by its `baseTest`:
```scala
  def when(tag: String): TagSelectable =
    if (JasmineTestFramework.hasTag(tag)) this
    else new Tagged(false, this)
```
and now, since `Tagged` is always created with `execute = false`, it might as well be renamed as `IgnoredTagSelectable` and have all its methods use the `x` versions:
```scala
class IgnoredTagSelectable(baseTest: JasmineTest) extends TagSelectable {

  def describe(title: String)(test: => Unit): Unit = {
    baseTest.xdescribe(title)(test)

  def it(title: String)(test: => Unit): Unit = {
    baseTest.xit(title)(test)

  def xdescribe(title: String)(test: => Unit): Unit =
    baseTest.xdescribe(title)(test)

  def xit(title: String)(test: => Unit): Unit =
    baseTest.xit(title)(test)
}
```
Finally, I would suggest something like `TestSuiteContext` instead of `TagSelectable`. The name of the class should not have any reference to *tags*, because maybe someday it might also allow to define selections with other criteria.