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 not required. this is an artifact from when the module name in the sample code was not the same as the table name. I'll remove.