Allow skipping exercises.

- Catch a special exit signal 55 to notify that we want to skip an
  excercise.
- Move is_enabled_service to functions.
- Fix bug 928390.

Change-Id: Iebf7a6f30a0f305a2a70173fb6b988bc07e34292
diff --git a/HACKING.rst b/HACKING.rst
index a105a66..7262cff 100644
--- a/HACKING.rst
+++ b/HACKING.rst
@@ -136,6 +136,10 @@
     FLOATING_IP=`euca-allocate-address | cut -f2`
     die_if_not_set FLOATING_IP "Failure allocating floating IP"
 
+* If you want an exercise to be skipped when for example a service wasn't
+  enabled for the exercise to be run, you can exit your exercise with the
+  special exitcode 55 and it will be detected as skipped.
+
 * The exercise scripts should only use the various OpenStack client binaries to
   interact with OpenStack.  This specifically excludes any ``*-manage`` tools
   as those assume direct access to configuration and databases, as well as direct