Added `not` for logical testing (see [comment][1])

This will return `true` for values of `false`, `null`, and
`undefined`. Anything else will return `false`.
This obviously goes against JS truthy/falsy behavior, but I
reckon if that's what you'd like just use `!!` or `!`
respectively; or implement `truthy`/`falsy`.

[1]: https://github.com/mstade/funkis/pull/7#issuecomment-40466894
Changed some `is` logic to make it a bit more consistent

`is(null, x)` will return true for `undefined` and `null`,
whereas before it was strict. Reason is if you care about
`null` you probably don't care to distinguish between it and
`undefined`. If you do, explicitly check for `undefined` which
is strict.

Also changed `is` to make use of `not` for checking if
something is logically true. This means anything is said to
*be* if it is logically true. That is, `is` will return true
for anything that isn't `false`, `null`, or `undefined`;
unless it was called with a type parameter in which case it's
more strict.