Return thenables for lazy evaluation instead of a promise

Ref #8
Use Object.getOwnPropertyNames for compatibility with native promises
Change argument names for thenable for clarity
Update docs and examples for lazy eval

Closes #9
Add test for referencing of Promise prototype methods
Merge branch 'lazy' into v2

* lazy:
  Add test for referencing of Promise prototype methods
  Update docs and examples for lazy eval
  Change argument names for thenable for clarity
  Use Object.getOwnPropertyNames for compatibility with native promises
  Return thenables for lazy evaluation instead of a promise