Unique function

This patch introduces `unique_function` (as an implementation detail), a counterpart to `function` that is _movable-only_ and can only be called once. By using it, we can finally support _movable-only_ arguments to actions and as closures to executors.

Breaking changes:
 - `hpx::threads::thread_function_type` was changed from `thread_state_enum(thread_state_ex_enum)` , now `thread_function_sig`, to `unique_function<thread_function_sig>`. Previous occurrences of `HPX_STD_FUNCTION<thread_function_type>` were replaced with just `thread_function_type`, and adjustments were made as appropriate to avoid copying them.
 - Executors were changed to use `unique_function<void()>`, exposed as `closure_type`, instead of `HPX_STD_FUNCTION<void()>`. Adjustments were made as appropriate to avoid copying closures.

The implementation of `unique_function` currently incurs a lot of duplicated code that could be shared with `function`. Doing so, however, requires some drastic redesign of the virtual tables and how they are generated. It will nevertheless be provided by a future patch.