Fix debugger invokes which return pointer types. Fixes #4214.
Use a single name prefix for sgen symbols. All non private symbols myst be prefixed with sgen_.
aspnetwebstack update
Implement more Task 4.5 members
Fix parsing of conditional expression with lambda block statement
[build] Improve our git submodule update handling

This is a two pronged commit. Firstly we need to handle older versions
of git which lack support for recursively updating git submodules. In
order to handle this we try three separate git commands until one
succeeds and print warning/error messages as appropriate.

Secondly we should really update git submodules when 'make' is invoked.
Currently we only do this from the root makefile, though if we care enough
we can do it elsewhere in our build tree too. This means we no longer have
to run configure every time a submodule is updated just to get git submodule
update to execute.
__ComObject.cs (Initialize) : Ensure that the static ctor has been called
  for the target type being instantiated.  This is a problem when using
  System.Activator.CreateInstance to create a COM object.
Fix some API mismatch
Convert some old unit tests
Update csproj files
Move System tests to System assembly
Force all test assemblies references to be explicit
Be less pedantic when issuing CS0219 warning (some people write crappy code)
Add the update_submodules script to EXTRA_DIST
Emit callvirt for non-virtual object methods called over generic type parameter
Add missing assembly references to test targets
Updated README with submodule maintenance instructions
[System] Fix MacOsNetworkInterface.ImplGetAllNetworkInterfaces()

On my (cursed?) MacBook Pro, calling
System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
results in an exception:

	System.ArgumentException: length
		at System.Array.Copy (System.Array sourceArray, Int32 sourceIndex, System.Array destinationArray, Int32 destinationIndex, Int32 length) [0x00000] in <filename unknown>:0
		at System.Net.NetworkInformation.MacOsNetworkInterface.ImplGetAllNetworkInterfaces () [0x00000] in <filename unknown>:0
		at System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces () [0x00000] in <filename unknown>:0

Some printfs later, and we see why:

	Array.Copy(array.Length=12, 3, array.Length=0, 0, 0)
	Array.Copy(array.Length=12, 4, array.Length=0, 0, 0)
	Array.Copy(array.Length=12, 4, array.Length=0, 0, 0)
	Array.Copy(array.Length=12, 3, array.Length=6, 0, 6)
	Array.Copy(array.Length=12, 3, array.Length=6, 0, 6)
	Array.Copy(array.Length=12, 3, array.Length=8, 0, 4)
	Array.Copy(array.Length=12, 4, array.Length=6, 0, 6)
	Array.Copy(array.Length=12, 8, array.Length=6, 0, 6)
	# BOOM!

(Apparently I have 8 interfaces: lo0, gif0, stf0, en0, en1, fw0, p2p0,
and vboxnet0.)

The problem is readily obvious: we're trying to read 6 bytes of data
when only 4 are available, and Array.Copy() complains appropriately.

The fix -- which looks to almost contradict a02076ba -- is to use
`sockaddrdl.sdl_data.Length - sockaddrdl.sdl_nlen` instead of
`sockaddrdl.sdl_data.Length - macAddress.Length` (or sdl_alen).
sdl_nlen is the offset into the source sockaddrdl.sdl_data array, and
in this case sockaddrdl.sdl_alen (the length of the destination
macAddress) isn't the same as sockaddrdl.sdl_nlen, hence the breakage.
cominterop.cs : Unit test to ensure that the static ctor has been called
      for the target type being instantiated.   This is a problem when using
      System.Activator.CreateInstance to create a COM object.
Replaced git submodules docs with a link to the wiki