Performance improvements for the PS dynamic runtime

Changed from using delegate based invocation to using static-ly invoked methods.
All optimizations should be enabled/disabled using compiler options:

		// if true, then static calls to PSBinaryOperation.Addition(a,b) are used instead of binder
		public bool NewDynamicRuntime_BinaryOps = false;
		// if true, dynamics are cast to boolean before performing logical operations
		public bool NewDynamicRuntime_LogicalOps = false;
		// if true, hasOwnProperty is statically called on dynamics
		public bool NewDynamicRuntime_HasOwnProperty = false;
		// if true, conversions use static calls to PSConverter.ConvertToXYZ
		public bool NewDynamicRuntime_Convert = false;
		// if true, conversions will be removed around dynamic statements
		public bool NewDynamicRuntime_ConvertReturnType = false;
		// if true, new get/set index call sites will be used
		public bool NewDynamicRuntime_GetSetIndex = false;
		// if true, new get/set member call sites will be used
		public bool NewDynamicRuntime_GetSetMember = false;
		// if true, both the true and false components of a ?: will be cast to dynamic if either is dynamic
		public bool NewDynamicRuntime_Conditional = false;
		// if true, event add/remove binders will be disabled
		public bool NewDynamicRuntime_EventAddRemove = false;