Overlord - Iteration 2

In this second iteration, I made all of the changes suggested in the first iteration, except changing the case statement in `bomb.rb`. After discussing it with Joe, he said it was okay for this implementation.

Below are the main changes I made in this iteration:

1. Create another feature spec: deactivate_bomb.feature.

2. Add descriptions to Feature files.

3. Make methods private in `bomb.rb` that aren't used outside the class.

4. Condensed many of the specs in my Feature files to read better; in the process I moved the detailed steps of many Givens, Whens, and Thens to `add_task_steps.rb`.

5. Reorganized `add_task_steps.rb` to place Givens, Whens, and Thens in order.

6. I improved the logic (I think!) of determining whether to use the user supplied codes or to use the default codes with the following methods: `#valid_code' and `#initialize`.

7. Added a Feature to check that the bomb is unusable after it explodes.

Thanks!
:+1: I had a hard time finding errors on this

And in my opinion, i'm being pedantic, I don't think there is anything wrong with the current way. Take this more as an optional tip. The only advantage to this is if we wanted to have certain scenarios where we pass in additional information... lets say we wanted to pass in the status, or incorrect_deactivation attempts, this allows us to do so rather than hard-coding the parameters

we could pass in a hash of parameters, something like this

    def initialize(options = {})
      @activation_code = valid_code(options[:activation_code) || DEFAULT_CODES[:activation]
      @deactivation_code = valid_code(options[:deactivation_code) || DEFAULT_CODES[:deactivation]
      @status = :deactivated
      @incorrect_deactivation_attempts = 0
    end