feat(Call API): able to post callee and caller as user identifier

Example:
data: {
  callee: '525404bb3d296ac819000005',
  caller: '525404bb3d296ac819000006',
  roomId: 138276548455115106031511
}
chore(API docs): update Call API doc
chore(package): bump version to v0.4.0-alpha.1
feat(notification): use Web Notification on Call notification. KAB-164

Notes:
- when test the notification on local development environment in Google Chrome v31.0.1650.48, the request permission dialog was not displayed.
- when test the notification on local development environment in Firefox v25, the request permission dialog is displayed.
fix(notification): remove notification.show(). KAB-164
feat(Call API): Should response with a room identifier

Before:
- The Call API required the API client to supply the room identifier

After:
- The Call API will generate a room identifier based on UUID v4 and using the JS implementation written by Robert Kieffer (https://github.com/broofa/node-uuid).

Breaking changes:
- The Room Controller will break since this API is changing.
fix(Room controller): able to receive room identifier response from API

Before:
- POST data to Call API should contained caller, callee, and roomId

After:
- POST data to Call API should contained only caller and callee. The client will receive a JSON response contained a room identifier.
Merge branch 'use-uuid-for-room-identifier' into 0.4.0-alpha.2
feat(Call API): validate the params

The API should only receive caller and callee params and will return HTTP 400 if the request cannot be fulfilled due to bad syntax.
Merge branch 'hardening-the-call-api' into 0.4.0-alpha.2
refactor(*): extract a service to get the user list. KAB-170

Before:
- Fetching the user list directly inside the controller

After:
- Fetching the user list using the User service
fix(Room controller): onlineContacts should under $scope.data .KAB-170
refactor(Room controller): rename the model

Before:
- onlineContacts

After
- users
Merge branch 'kab-170' into 0.4.0-alpha.2

Refactor: user contacts should be handle by the service
test(*): configure Travis with Chrome and Firefox

Removed:
- PhantomJS
test(TravisCI): fix the file permissions
test(*): set the karma logging level to 'debug'
test(*): increase the Karma capture time out to 100000ms
test(*): fix TravisCI configs
test(*): set to Google Chrome