Pass task by universal reference and variadics

As suggested by daniel-j-h tasks are now taken by
universal reference and forwarded with std::forward.
Also enqueue takes a variadic argument list and binds
the arguments to the task.
Reformated excessively long lines
Removed Worker class in favor of a lambda capturing this
Removed unnecessary forward declaration
Changed nontemplates member to inline

This change allows the "library" to stay
header only. This might not be best practice
but helps keeping the more educational code
compact.
Merge branch 'develop' of https://github.com/progschj/ThreadPool into develop
trailing whitespaces
fixed potential deadlock