Updated project to recent renames
Fixing encapsulation

- Still need a code review
- Lock needs to be improved
- Currently lacking support for Nested transactions
Renamed Transaction.TransactionNeedle

Transaction.TransactionNeedle is now Transaction.Needle
Fixed a defect on Equals
Added StructNeedle<T>

StructNeedle is a light alternative to Needle it is intended to enable
composition of needles.
Needle now supports composition

New standard: a needle can be alive with a value of null.
Fixed operators

Comparison operators are now null aware
Added typed Equals
Added support composition and for empty needle

ReadOnlyNeedle...
- can now wrap another needle
- can now not be alive
- can be alive with a null value
IsAlive can now be delegated

WeakDelegates are terminal, they do not support wrapping other needles,
but can be wrapped
Got rid of EmptyReadOnlyNeedle

And fixed a problem in DefaultNeedle where it incorrectly checked for
EmptyReadOnlyNeedle (oops...)
Change Unify to TryUnify and made Release public
Improved TryUnify and added overload

TryUnify now checks if the referenced needles are Needle<T> and if they
are takes advantage of TryUnify on them.
Added IUnifiableNeedle
StructNeedle<T> now is IUnifiableNeedle<T>
updated project (IUnifiableNeedle<T> as missing)
Updated NeedleHelper to support nesteding needle
Added missing method

The methods CanCreateNestedNeedle and CanCreateNestedReadOnlyNeedle has
been added
Small fix

Removed unused generic type argument
Made TryUnify generic