Fixed crash when a ConnectionRef is try to access a link that has already been deleted. Part of the fix was converting the head of the callback ring to a shared_ptr and giving a weak reference of the head to each ConnectionRef. This way invalid links will be ignored and a deleted or out of scope Signal will result in a null shared_ptr from the weak_ptr.
Added some of the tests from Tim's example. Modified them to use my adjusted function calls and ConnectionScopes.