[delegate] Improve trampoline caching

With this patch, we see a 3x execution speed improvement in the following micro-benchmark :

	using System;
	
	class Foo {
		public int Test () { return 10; }
	}
	
	class Program {
		public static int Main (String[] args) {
			long n = 50000000;
			if (args.Length > 0)
				n = Math.Max (n, Int64.Parse (args [0]));
	
			var a = new Foo ();
	
			for (long i = 0; i < n; i++) {
				var f = new Func<int> (a.Test);
				if (f () != 10)
					return 1;
			}
			return 0;
		}
	}