Added support for additional data types and mask in sieve function

This adds support for a few more data types in ```sieve``` function (```int8``` through ```int32```).  It also adds support for using a mask with ```sieve```.

Includes additional tests, more validation in ```sieve```, and moved optional parameters from ```_sieve``` up to ```sieve```.

This does not include refactoring of docstrings, etc as described in #161 (most of the changes were done prior to that discussion).  That can be handled in a later PR focused just on that task.