Fix Hash::extract() not matching 1/0 to true/false.

Historically [prop=1] has matched prop=true as well. This restores that and also fixes [prop=0] not finding falsey values.

This makes the typing less strict in Hash::extract() but I don't think it is unreasonable given PHP's type juggling.

Refs #3288