Make FaceNet pickalable
In this MR FaceNet was made picklable. Two things were necessary.
- Organize the initialization of the public variables of the facenet class
- Add a semaphore to control two critical regions (call and getstate). This allows Dask to smoothly do multithreading.