Support for functions in preconditions, e.g., width

In particular, this lets us express:

	Name: AddSub:1386
	Pre: C == width(%a) - 1

	%a = lshr %x, C
	%r = sub 0, %a
	  =>
	%r = ashr %x, C