replace underscore by lodash
rewrite exceptions module

This commit totally rewrite the exceptions module to better handle subclassing of Error class.
You can now create new Error type using a simple create() method.