Refactored loop.
Using tagged constructor instead of factory method to create loops.
Removed loop::deleter and using lambda instead.
Privatized members and eliminated a friendship.
Made get() return a pointer for simplicity.

Signed-off-by: Peter Atashian <retep998@gmail.com>