Pull request for #284 to rewrite all plugin tests

Sumamary:

This final patch abstract common codes into base.py. The code should be
much cleaner to read.

+test_robots.py

test_robots.py is one that doesn't use the /test endpoint. It launches three
instances of Flask servers because to test the plugin we need a server that runs
with valid robots.txt, one with invalid robots.txt and one without robots.txt.

+ test_hsts.py

test_hsts.py test still rely on external sites (mozillalabs.com and google.com) to
test the existence and absence of HSTS header. We can't launch a local HTTPS server
because minion.curly.get will do certificate check. I need to speak with stefan about
allowing curly to receive an option to enable or disable verification on each call.

- cold boot

If we try to run multiple test files together there will be failure. This seems to be
race condition, the fact that some servers have not been terminated. This is a regression.
One way to solve this is to provide a test runner script that invoke individual test file.
I will file another bug to look at this issue but for now I know each file runs perfectly
fine.