用PBKDF2替代bcrypt，以及Windows相容性修正

拿掉bcrypt並且使用[crypto.pbkdf2](http://nodejs.org/api/crypto.html#crypto_crypto_pbkdf2_password_salt_iterations_keylen_callback)的原因是去除node-gyp的相依性，減輕設定開發環境的困難，並維持高安全性的加密。

舉例而言，以下環境無法安裝需要compile的npm package：

- 沒有裝gcc的Linux
- 沒有裝Xcode command line tools的OS X
- 沒有裝Visual Studio的Windows

**此修改不相容現有的user model(bcrypt hash)，並且會在User新增salt欄位**


Windows相容性的修改則是更新了mongoose版本，測了一下沒發現什麼問題