This gets rid of `@isn_type` in Isn.Base. It was only ever there because I had
to store it somewhere, since compile-time macro parameters are not available to
a function at runtime.
`__CALLER__.module` contains enough information to determine what datatype to
use, so the usage of `Isn.Base` can be simplified to the following
```elixir
defmodule Isn.ISBN13 do
use Isn.Base
end
```
instead of
```elixir
defmodule Isn.ISBN13 do
use Isn.Base, :isbn13
end
```
Restructuring: Isn.Extension is now called Isn, which means that the postgrex
configuration line becomes a bit shorter now:
```elixir
{:ok, pid} = Postgrex.Connection.start_link(
database: "isn_test",
extensions: [{Isn, {}}])
```
instead of the previous version, with `extensions: [{Isn.Extension, {}}]`.
I also implement the entire library in the `lib/isn.ex` file, since it felt
pretty silly to have eight different one-line files under `lib/isn/` looking
like this: `defmodule Isn.ISBN, do: use(Isn.Base, :isbn)`
We now have the following types:
- ISBN
- ISBN13
- ISMN
- ISMN13
- ISSN
- ISSN13
- EAN13
- UPC