Remove _POSS tokens in favor of one POSS token.

- Since we need a separate SQUOTE token still for
  (ability-granting ability)-granting abilities (eg. Koth of the Hammer),
  we'll use a parser rule poss to match either POSS or SQUOTE so that
  when we want a possessive we can have it. (SQUOTE as an open quote for
  an ability is only possible after certain words (has, have, and) that
  won't make sense to have poss follow.
- Remove all possessive definitions and uses from keywords.py.
- Remove old TODOs in Symbols.g regarding landwalk and typecycling.
- Move the WALK token into keywords.py alongside LANDWALK.
- Move comment about punctuation into Demystify.g where the punctuation
  is actually listed.
Expand player_poss to accept more players.

- Allow player_group to reference players' teammates or opponents.
- Add some simple unittests to cover this.
- Some minor cosmetic changes to unrelated rules.
Triggers that are one of two events.

- Multicast triggers take one of two forms:
  - subset event or event, which binds as (subset (event or event))
  - subset event or subset event, which binds as (subset event) or
    (subset event)
- "haunted creature" isn't how they're referred to; fix that up to match
  "the creature it haunts".
- Only allow triggers to use subset lists, and not "bare" subsets that
  begin with properties (as some events may end with properties).
- Add tests for these new rules.
- Fix some spacing to be more consistent.
Move lists of keywords into raw_keywords.

- Separate out the raw keywords by their argument type, and create rules
  that reference keywords that have a given argument type.
- Remove the keyword_multiword rule by moving the keywords into their
  respective raw_keyword_ rules.
- Fix a typo and some spacing.
Add attack and block triggers.

- Add a special subset rule "pl_subset" which is a list of players
  and/or planeswalkers. It's a very simple rule for optimization reasons;
  too much ambiguity and ANTLR's memory usage balloons out of control.
  (Besides, there's exactly one real match for this case at the moment.)
- Add tests for attack and block triggers.
Give antlr3 more memory.

It uses about 1.1 GiB at the moment.
Card update for Magic 2013, Planechase 2012.
Language update for Magic 2013, Planechase 2012.

- Add new type of keyword collision detection, "partial collision", for
  keyword phrases that collide in the first word, and generate macro
  rules based on said detection. This creates a few extra tokens and a
  few extra parser rules, but it ensures Demystify doesn't choke trying
  to lex "new targets" as NEW_PHYREXIA.
- New counter type that exists on one card!
- Planechase 2012 adds a card with the ability to roll the planar die.
- Rename raw_keywords_with_ rules to raw_keyword_with_ since it's not a
  rule that matches a plural amount of keywords.
Add triggers for costs being paid.

- This covers "subset's echo cost is paid" and "you pay subset's echo
  cost", but not "an echo cost is paid".
- Remove unnecessary duplicate tokens from Demystify.g.
Merge branch 'master' into python3
Use POSS or SQUOTE for partial collisions.
Add new trigger conditions.

- When an int_prop becomes a given value
- When a player controls a given subset
- Also tweak the cost_paid trigger to allow for costs not being paid.
Add two more trigger events.

Also fix error reporting not giving the proper text.
Add a handful of new triggers and related rules.

Triggers for:
- cycling cards
- being dealt damage
- discarding cards
- drawing cards
- gaining/losing life
- tapping things (for mana and not)
- things becoming tapped / being tapped for mana
- attacking/blocking alone
- having a life total of a given value

Additional rules:
- 'his or her' as ref_player possessives
- 'that' object references
Return to Ravnica update.
Add "neither" and "nor" words.
Add more trigger rules and fix an old one.

- Removed an extra handling of "becomes tapped".
- Add sacrifice event.
- Add trigger condition for being in a zone_subset.
- Allow any number of "other" objects instead of just "all other" objects.
Remove contraction tokens.

Instead of requiring separate cases for IS, IS NOT, and ISNT,
have NOT match the latter part of the contraction so that "isn't"
becomes IS NOT. Similarly for the other contractions 're, 've, and 's.

This last one unfortunately can also be a possessive, so split POSS
up into APOS_S and S_APOS, and then let poss and is_ match as
appropriate.

Also merge the plural forms of IS and HAS into the singular forms, as
we don't really need to have ( IS | ARE ) strewn everywhere.
Cover more trigger conditions.

- Add a trigger on a player shuffling their library.
- Add a zone change trigger for returning an object to hand.
- Add an object descriptor for eg. "both white and blue".
Merge branch 'master' into python3