Scoped messages

Allow scoping of messages. Took longer than I thought, but I think I like the final implementation.

Highlights:
 - Tests work now
 - Automatically sanitize the flash messages with `ngSanitize` (needed for the above)
 - Flash messages are not stored on the rootScope and can be overridden by passing in a custom scope.

Notes/Questions:
 - I'd like to use a getter for `messages`, but it doesn't seem like there's a well supported way to do this (browser compatibility issues with `object.defineProperty` and `get messages()`)
 - Tests pass and tested manually.
 - Weaker unit tests compared to integration tests. This is because I started with integration tests. I don't think adding additional unit tests is going to provide more coverage. Let me know if you disagree.

cc @ejholmes @jerrysu 
Ok, so I think the way this should work is, there's should be an option on the directive that says "Only display messages from the current scope" and then, we could not fall back to a higher scope for that directive. This is going to take some time, I'm going to defer this until we actually need it.

I'd like to leave the current behavior as-is. I can file a ticket to track this if you like.