add basic access control feature

 This changes allows you to protect trigger methods from being run successfully based upon a block of code.

 After extending a class with Surrounded::Context you may run the method 'protect_triggers' which will include
 the Surrounded::AccessControl module.
 This modules changes trigger methods so that a protector method is first run to see if the trigger is accessible.
This also changes the behavior of 'triggers' so that only accessible triggers (for that instance) are returned.

Here's an example:
class SomeContext
  extend Surrounded::Context
  protect_triggers

  trigger :do_something do
    'something'
  end

  disallow :do_something do
    # some condition when you are not allowed
  end
end

context = SomeContext.new
context.triggers => #<Set: {}>
context.all_triggers => #<Set: {:do_something}>

Using the 'disallow' DSL is not required. Just define 'disallow_do_something?' and it will work the same way.

This change is useful for generating a list of options for a context using 'all_triggers' vs. 'triggers'.
mention the role_methods method in the readme to disambiguate roles vs. role methods
clarify the need to include Surrounded in your own role classes
add details about trigger protection to the readme