removed shared pointers
boost benchmarks and final touches on removal of shared_ptr
Merged test for #4
Improve performance of connections (Related to #2)

Being that slot_id's used to compare slots always increment and are
therefore always in ascending order (you can't re-add them or rearrange
them), we can improve lookup time when trying to grab a reference to the
socket from a connection by using `std::lower_bound`. Lookup times go
from O(N) to O(log N).
Fixed invalid memory access when shared_ptr has expired
Fairer benchmarks
Use boost::signals2::dummy_mutex to prevent expensive locking that we
don't deal with with Slimmer Signals. SlimSigs are still way faster
though :). 29 seconds vs 6 seconds for the no shared ptr version
added slot list container adaptor
stuff
Refactor slot list
Adds support for up to nearly unlimited rentry for emitting signals

- Replace previous two vector storage with a dynamic vector of vectors
  which grows when you try and connect slots while we are iterating,
  preventing iterators we care about from invalidating
- Cleaned up cleanup code, moved to the `emit_scope` class

TODO:
- Maybe use binary search for connection->slot lookup.
- Move some signal methods and types to private
Bug Fixes + Tests
Now tests for disconnect_all correctness, fixes a stupid typo
Reduce heap allocations on initialization
The shared_ptr to our signal that is used by connections is now deferred

No heap allocations will occur until a connection is made.
Fixed swap for m_self