ivy: more execution context fixes

make Context an interface so we can take the implementation out of the value package
create execContext implementation in parse package
move function definition into that package

also allow
	def foo x
to declare but not define unary foo; ditto for binary

user-defined operators are pretty healthy now.