refactor(error): Update Start()
refactor(error): Update Start()

Start will now return the cause of startup failure.

Also, a mutex will protect the logger callback of any race conditions,
this prevent unsolicited error if the end-user is not careful with it...

november-eleven/lemon