Improved LazyBucket

- In Bucket: changed the property Values to the method GetValues and
added an overload that takes a converter
- Where Bucket.Values was used has been updated
- LazyBucket now uses a Bucket<LazyNeedle<T>> and takes advantage of
GetValues
- In LazyBucket: Changed TryGet to Get because Get should not fail but
create a new value
- In LazyNeedle added the interface IEquatable<LazyNeedle<T>>
- In Work: updated to use Get instead of TryGet
Added name in Work.Context
Added ArrayPool