Update profile

## 非互換な変更点
* `POST /api/users/activate`で、`email_local`をチェックしないようにした
* `GET /api/users/profile`を`GET /api/profile`に移動
* `POST /api/session`で、email/passwordが間違っているときは`422`ではなく`401`を返す
  * 下記`PATCH /api/profile/password`と整合性をとるため。

## 新API
### `GET /api/profile`
これまでの`GET /api/users/profile`と同じ。

### `PATCH /api/profile`
更新できる項目は3つ。すべてoptional
```json
{
    "email_mobile": "hoge@example.com", 
    "handle_name": "hoge", 
    "class_year_id": 2
}
```
正常に更新できれば`200`、エラーがあれば`422`

### `PATCH /api/profile/password`
* 現在のパスワードと新しいパスワードを入力
* 現在のパスワードが正しければパスワード更新。
```json
{
    "current_password": "current_password",
    "password": "new_password"
}
```
正常に更新できれば`200`
現在のパスワードが間違っているときは`401`
空文字列、空白文字のみだとエラー扱いで`422`
##### discuss
現在のパスワードが間違っている時`401`を返すと、単に`Access-Token`を持っていないクライアントからのリクエストとHTTP statusが同じになるけどこれは大丈夫ですか？

### `POST /api/password_reset`
* 「パスワードをお忘れの場合は」ページで使う。
* `Access-Token`不要。
* emailを入力して、登録されていればそのアドレスにパスワード再設定用のメールを送る
```json
{
    "email": "guest@ec.hokudai.ac.jp"
}
```
正常であれば`200`かつメール送信。
アドレスが見つからなければ`404`

### `PATCH /api/password_reset`
* ↑で送られるメールに記載のURLのページからパスワードを再設定するのに使う。
```json
{
    "reset_password_token": "...",
    "password": "new_password"
}
```