Add support for setup and teardown functions.

Some modules might want to perform one-off setup or teardown tasks.
This commit adds support for that by calling setup() before the scan
begins and teardown() after it ends.  If the module does not implement
these functions, no action is performed.

This change makes the following feature request possible:
<https://github.com/NullHypothesis/exitmap/issues/10>