Adding a support for passing an additional where clause to filter propagation

The functionality added here is useful to limit subtable filtering propagation using some generic key. Currently it is possible to limit propagation only using `name = value` syntax: e.g. `type = 'Unit'`. This allows a more generic syntax: e.g. `rental_id like p%`. 

In particular, it allows to fix a problem on Apartment List where propagation from Unit and Community to Favorites, leaves the table completely empty. 

@kristjan @andyvb 
Not quite. `Where_clause` can actually be a hash, a symbol, a string, or an Array. 

If it is a string it is substituted literally. 
If it is a hash, it will be joined as name=value AND name=value, etc. 
If it is a symbol, it will be assume boolean (e.g. active). 
If it is an array, it will assume first element is a string, and the rest are substitutions within that string. 

So there is still value in this insane code, although deep down I am pretty sure it is possible to do the same without this crazy gsub thing. In my defense, I didn't write it :)