`last` never returns nil for non-empty sequences

Signed-off-by: Ambrose Bonnaire-Sergeant <abonnairesergeant@gmail.com>
There are memory errors when running tests in Hudson. Give up for now.
Try this instead for Hudson
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`.