Mapper: Correct Unknown Method Error Handling

Since refactoring in commit, 3c278975c59cf8dbcfdfdf1184e4cf9c89de7ce3
we have experienced some issues when using e.g. d-feet with banshee, as
described in BGO#725446.

This patch corrects a small mistake in the refactoring process, in the
creation of an org.freedesktop.DBus.Error.UnknownMethod message.
Merge pull request #38 from arfbtwn/banshee-bugfix

Mapper: Correct Unknown Method Error Handling
[build] Show an informative message when trying to run test from toplevel when disabled
[Protocol] Fix GCHandle usage for struct and disable fast path.

Mono compiler seem to have regressed(?) when it comes to taking the address of a generic struct type. This means we need to use boxed struct object to achieve the same thing with GCHandle.
[tests] Bump version number in introspection tests
[build] Bump to 0.8.1
bus: Name exists if present or activatable
TypeImplementer: Implement multiple interfaces

Issue #34 reports that only the main interface is presented, so that if
e.g. a programmer wishes to add the properties interface to a type, then
the resulting implementation attempts to call the method on the
incorrect interface.

This is due to a premature optimisation, which this patch removes.
implementor: Correct F# Event Identification

The MethodInfo.IsSpecialName property doesn't appear to be set true for
event add/remove methods produced with the F# compiler, even with the
[<CLIEvent>] annotation applied to the event.

This appears partly due to F#'s generalisation of the signature for
event handler delegate types, but also because we attempt to treat all
methods equally when implementing them.

This patch provides a quick hack to solve the problem with minimal
change to the TypeImplementor class.
implementer: Robust event/property identifcation

Since the previous commit was a hack, and slightly questionable, this
one builds upon it by adding a class with two simple extension methods
for MethodBase objects; IsEvent and IsProperty.

They are used to ensure the correct branches are followed when
generating hookup methods for proxy classes since the IsSpecialName
property is unreliable on interfaces originating in F#.
proxy: Enable DBus property extraction via CLR properties

Properties were previously involved in some name mangling to separate
them from normal methods, events were dealt with in a similar way. As
result, although signals worked correctly, properties did not.

This patch flips the implementation process on its head, first building
a set of methods for evaluation and removing pairs as properties or
signals (events) are implemented before passing the remainder to the
general function.

Property Get/Set is handled by two additional functions in the BusObject
class, the IL is generated specifically for them. Event listener
addition and removal IL generation is refactored into its own function
in the same way.
proxy: Improve Get/Set support

The previous patch worked great for object references (e.g. strings) but
was generating incorrect IL for properties expressed as value types.
This patch adds box and unbox OpCodes for the affected properties.