Return polymorphic this types from Configuration
Return polymorphic this types from Configuration

The Configuration class hardcodes it's return types as `Configuration`. This
meant that the examples from the README didn't actually typecheck:

```sh
$ cat example.ts
import { createSession } from "./source/index.node";

createSession()
    .setDerivationRounds(1000)
    .encrypt("some secret text", "myPassword")
    .then(encryptedString => {
        // do something with the encrypted text
    });

$ ./node_modules/.bin/tsc --noEmit --target es5 example.ts
example.ts:6:6 - error TS2339: Property 'encrypt' does not exist on type 'Configuration'.

6     .encrypt("some secret text", "myPassword")
       ~~~~~~~

Found 1 error.
```

I fixed this using TypeScript's "polymorphic this" feature. See:

https://typescriptlang.org/docs/handbook/advanced-types.html#polymorphic-this-types

perry-mitchell/iocane,perry-mitchell/iocane,perry-mitchell/iocane