Parse Transform for cleaner developer experience

## sqerl_gobot

The `sqerl_gobot` got it's name because at first, it seemed like a transformer knockoff. Also, there's another module called `sqerl_transformers` and I thought calling it `sqerl_transform` would get too confusing.

### Exprecs functionality
The first thing it does is provide a dumbed down version of `exprecs`. Since exprecs was built to allow you to export multiple records from a single module, it had to a lot more work than we needed. The exprecs-ish functions we've preserved are:

* `'#new'/0`
* `getval/2`
* `'fromlist/1`
* `fields/0`
* `'#is'/1`
* `setvals/2`

This PR suggests that functions with the intent of being called mostly by `sqerl_rec` internals be prefixed with a `#`, but people can use whatever functions they want.

### Types
We've also exported a type to encapsulate the record completely, take the following record:

```erlang
-record(notifier_config_object, {
    name :: string(),
    rank :: string(),
    serial_no :: integer(),
    non_typed
}).
```

It exports the following dialyzer types:

```erlang
-type notifier_config_object() :: #notifier_config_object{}.

-type attr() :: name | rank | serial_no | non_typed.

-type prop() :: {name, undefined | string()}
              | {rank, undefined | string()}
              | {serial_no, undefined | integer()}
              | {non_typed, any()}.

-export_type([{attr,0},{notifier_config_object,0},{prop,0}]).
```

### sqerl_rec abstractions
have been tabled from this PR. The code still exists in the parse_transform, albeit commented out. We can revisit this in the future.
It's possible that there's more than one record, so we want to only insert our syntax tree once, so it might as well be right after the record we care about.

The only guarantee about records we get from the first pass is that there is one with the same name as the module. unlike the Highlander, there can be more than one.