Added PUT functionality

- Added guts to PUT function
- Added promise lib (Q)
- Reworked lib to work with promises
- Reworked unit tests to work with promises