Move gen-datatype
Move gen-protocol
Remove redundant gen-protocol implementation
Add AVec and use it instead of APersistentVector

Signed-off-by: Ambrose Bonnaire-Sergeant <abonnairesergeant@gmail.com>
Enhance `mapv` for non-empty sequences

Signed-off-by: Ambrose Bonnaire-Sergeant <abonnairesergeant@gmail.com>
Add shepmaster to contributor list
Thank my contributors
Move unit tests for `overlap` to their own file
Extract nth helper functions for filters

The comments became redundant between the implementation and function
names.
Extract nth helper functions for return type and filters
Make nth helper function's variable names more verbose
Get nth's index once at the top
Helpers for converting expressions to objects/types
`first` now uses a path expression

This allows code like `(= :foo (first x))` to refine the type of `x`.
Rename FirstPE to NthPE

Since it no longer can be assumed to operate on the first item, we
also add an index identifying the item. This index is not used yet.
`second` now uses a path expression

This allows code like `(= :foo (second x))` to refine the type of `x`.
`nth` now uses a path expression

This allows code like `(= :foo (nth x 5))` to refine the type of `x`.