Rename unittest::step to unittest::task

  This is simply a semantic change, and offers no recourse other than
  making sense grammatically.

Add unittest::task test.

  This is just a small test at the moment and will be expanded upon to
  offer full coverage later.

Add unittest::function alias.

  This alias is just std::function<void()>, but saves (me) the trouble
  of having to constantly type the type signature out.

Modify unittest::test and unittest::task interfaces.

  They are simple wrappers that will eventually 'submit' work to an
  internal registry of test cases.

Update the Readme's small example to reflect the new interface.

Modify unittest::test and unittest::task to be noncopyable, nonmovable

  This solves an issue where the lifetime of an object becomes
  corrupted when accessed via an const reference. All compilers exhibit
  this behavior, and the cause of this behavior really shouldn't be
  used anywhere. An example of this behavior can be seen below::

    auto const& ref = std::vector() = std::vector { 1, 2, 3, 4 };
    for (auto item : ref) { } // A sigsegv or other error will occur

  For (my) sanity's sake, I have decoupled test and task from using an
  initializer_list of tasks, and instead simply have task return a
  tuple containing a new string, and an std::function. This is safer,
  and better in terms of interface decoupling. (This means that for the
  eventual unittest::skip objects, they can simply return a
  unittest::function, as well as any user defined objects)