Contextualizer and decontextualizer rule using pattern matcher

In light of what was discussed [here](https://groups.google.com/forum/#!topic/opencog/-hqPQRdIa7E), I split the contextualize rule a) into two patterns: one BindLink applies if the relation is an EvaluationLink, the other one applies for all other cases. I added a rule for contextualizing subsets.
I'm not quite clear on the difference between SubsetLink and InheritanceLink: [Here](http://wiki.opencog.org/w/SubsetLink) it says that a "SubsetLink denotes extensional inheritance between two Atoms. An example of a SubsetLink would be:
```Subset dog animal```"
For me, this looks identical to an InheritanceLink -- at least to how I've used it so far. Could you elaborate on the difference, @bgoertzel, @cosmoharrigan?
I've added a decontextualize rule as well.
As I've alluded to in the discussion, having to use distinct patterns simply to differentiate cases seems quite cumbersome. Isn't there a better way?
I think it's still consistent. The problem arose because the consequence of the ImplicationLink was contained in a ListLink -- which is not the case here. I just used the AndLink to specify that both VariableNodes are required.