* rename hasAccess to canJoin for challenges
This is so the function won't be used accidentally for other
purposes, since hasAccess could be misinterpretted.
* add isLeader function for challenges
* allow challenge leader to join/modify/end challenge when they're not in the private group it's in
* delete duplicate test
* clarify title of existing tests
* add tests and adjust existing tests to reduce privileges of test users
* fix lint errors
* remove pointless isLeader check (it's checked in canJoin)
* Added Contributor Titles to Names on Hover
* Added Contributor Titles to Names on Hover
* added contributor title text on hover
* added contributor titles on hover in chat
* added contributor titles to text on hover
* Delete .project
* new inbox client
* add tests for sendPrivateMessage returning the message
* update DELETE user message tests
* port v3 GET-inbox_messages
* use v4 delete message route
* sendPrivateMessage: return sent message
* fix
* prevent quest progress message in party chat when user is resting in the inn
* improve comment
* update tests now that the test group includes a new member (sleeping quest participant)
* adjust a test to fix lint failure (and make the test better)
* fix order of element assignments in test array
* Added smartbanner code to suggest iphone/android apps for mobile users
* Installed smartbanner.js as a module and imported css through app.vue
* Changed the logos to use the ones in the existing presskit directory and fixed the import line for the smartbanner component
* Changed smartbanner import to a src include for css and updated js import
* fix(groups): correct timing on updating member quantities
* fix(groups): don't run group cancellation check if we're in invite flow
* fix(groups): update leader when memberCount is 1
* fix(groups): move leader update back--unrelated to group plans fix