Match multiple exclusion rules

This does the following:
- Changes the exclusion-rule logic such that, if multiple rules with pass keys match, then the keys taken is the union of the matches.  If *any* matching rule has no pass keys, then Vimium is disabled.
- Substantially updates the page popup.  Basically, it now reuses the structure and styling from the options page (and we lose `popup.coffee`).
- Consistent look-n-feel wrt exclusion rules.

Example:

![snapshot](https://cloud.githubusercontent.com/assets/2641335/5518433/c6fc33ac-891f-11e4-9a20-da71e0fdaa89.png)

Other points:
- The state that would apply *if the rules were to be save* is given at the top of the popup.
- Patterns turn red when they don't match the current URL. (This looks better in practice than you might expect.)

Issues:
- ~~The *only* way to delete rules is via the little cross.  So that workflow is not great.~~
- ~~@mrmr1993 wanted some user feedback as to what a red pattern means.  I can't figure out how to do that for now.~~
- The popup is wider than it was before.  Is that ok?
- (There must be more, I'll add them as I think of them.)

Fixes #1339.

Edit:

Additional notes:
- The CSS from the options page has been moved to its own file, and is now shared with the popup page.
- The HTML for exclusion rules has been moved to its own file, and is similarly shared.

Also: ![snapshot](https://cloud.githubusercontent.com/assets/2641335/5518690/8d0f7b60-892c-11e4-88b1-9b26fffe0765.png) Fewer LOC!

I don't follow why @url being nil indicates that we're on the options page vs. the popup page. This could be better documented (perhaps in the constructor) or encoded some other self-evident way.