Add a new requisite!!! This commit adds the `prereq` requisite!

This requisite allows a state to be executed only if the required
state is expected to make changes to the system in the future.

So, if a script should only be run if a file is about to be changed
this can do it, or run a command BEFORE the system updates software.

This is useful to shut down a service before instaling an upgrade
and then restart the service after the upgrade
@jacksontj, you owe me a totorial or some docs on this one, I had
to seriously rack my brain to pull it off :) It is hard to find
out what is going to happen in the future!!

BTW, this is still experimental, and I have been able to get a
recursive loop with bad syntax, so be careful!