Implementation of BRIEF Feature descriptor

BRIEF paper : (http://cvlabwww.epfl.ch/~lepetit/papers/calonder_eccv10.pdf)

TODO :
- [x] Add implementation for the `mode='normal'`
- [ ] Add tests
- [x] Decide the best place for `_remove_border_keypoints` as it would be used by many feature descriptor functions

A snippet to test this PR:
```py
from skimage.feature.corner import *
from skimage.feature import hamming_distance
from skimage.feature._brief import *
square1 = np.zeros([10, 10])
square1[2:8, 2:8] = 1
square1
keypoints1 = corner_peaks(corner_harris(square1), min_distance=1)
keypoints1
descriptors1, keypoints1 = brief(square1, keypoints1, patch_size = 5, return_keypoints=True)
keypoints1
square2 = np.zeros([12, 12])
square2[3:9, 3:9] = 1
square2
keypoints2 = corner_peaks(corner_harris(square2), min_distance=1)
keypoints2
descriptors2, keypoints2 = brief(square2, keypoints2, patch_size = 5, return_keypoints=True)
keypoints2
hamming_distance(descriptors1, descriptors2)
match_keypoints_brief(keypoints1, descriptors1, keypoints2, descriptors2)
```