public BackgroundJobClient class and IBackgroundJobClient extensions

Added several tests and overloads for different methods of different
classes to simplify the usage, including:
* BackgroundJob.Enqueue with explicit queue support.
* EnqueuedState and ScheduledState ctor overloads.
Also added more method validation logic for the Job class.