Update package.json with meta info

 - Added homepage, repository, bugs
 - Added main field for OCD.
 - Added a scripts test field
add test.js
add editorconfig for easier collaboration
add .jshintrc to enforce indentation
add coverage/ to gitignore for istanbul support
add istanbul commands to scripts for convenience
tape dev dependency
Change anonymous functions to be named

 - Gave the anonymous functions a name for stack traces
    and general hygiene
 - Moved the `exports.foo = ` statements into a single
    `module.exports` at the bottom for hygiene.
    This makes it easier to see the interface of the package
    in a single place.
wrote tests
Remove `Result.Result`

 - not used in README
 - not that useful, you don't really want to create a Result
Support `return Result.Ok(null)`

Because of how the boolean check `Result.Ok` function returns
    `null` on mismatches you could not box the value `null`
    in a `Result.Ok` object.

I've changed the result of `Result.Ok` as a checking function
    to be `undefined` to support `null` as a value.

In JavaScript it's common to return `null` however `undefined`
    is almost always resolved for being part of the language,
    not part of your public interfaces.
Remove instanceof checks

These checks were redundant because we do not expose these
    classes and instead expose factories.

Statically all callsites for these constructors always use
    `new`.
Remove instanceof and replace with uuids

`instanceof` checks break across the node_modules boundary.

If I import a library that returns a `Result` but have a
    different copy of `Result` for checking then it uses
    then there are two constructors and `instanceof` breaks.

The only real work around is to "brand" objects with a UUID.
    This UUID must be globally cached internally against the
    major version number.

I updated the code to create approximate uuids that are not
    random but random enough and cheap (loc) to create.

I then use the `Individual` module to create a globally cached
    singleton UUID for each of the three classes.

I use these brands for checking in the Result.Ok and Result.Err
    functions.
Cleanup README + better usage

I updated the readme with new lines and a mention about
    licencing.

I added a link to the Rust documentation.

I updated the usage to:

 - use `Result.Ok` and `Result.Err` to be more idiomatic JS
 - explicitely check against `undefined` in the if statements.
    not doing so creates false negatives if you return
    `Result.Ok('')` or something like that
Remove RESULT_UUID and associated global

In the implementation we can just check the only two options
    and thus remove a global variable.
Write documentation in the README

 - Added a jsig definition for the interface that shows
    the functions are overloaded to do one of three things
 - Added a paragraph explanation to explain how it is
    overloaded.
add defensive gaurd against `undefined` in Result.Ok
remove semi colons
remove another semicolon
gaurd against boxing non errors