crimson/os/alienstore: parse crimson_alien_thread_cpu_cores as a cpuset(7)
the "List format" listed in cpuset(7) allows us to specify a range of
CPU cores in a comma-separated list. and the upper bound of the range
is optional. before this change, the upper bound is not optional.
before this change, the upper bound of the range is not optional. and
the upper bound is not inclusive. so we don't support the list format
of cpuset(7). Take cores "1,2,3,5,7,8" for example, we need to set the
option to "1-4,5-6,7-9" to represent this cpuset.
after this change, the upper bound is optional, so we can properly
support the list format defined by cpuset(7). and the upper bound is
inclusive. so we can use "1-3,5,7-8", which is compatible with
notation defined by cpuset(7).
in this change, the cpuset option is parsed using a seastar helper,
which is implemented using a regex. so we don't need to manually parse
it. as Seastar's parser returns an `std::optional<std::set<unsigned>>`.
if the string does not match with the regex of comma-separated list,
the returned cpuset does not have a value. this design is more explicit.
so in this change, instead of using `std::vector<uint64_t>`,
`std::optional<cpuset>` is used.
Signed-off-by: Jianxin Li <jianxin1.li@intel.com> Signed-off-by: Kefu Chai <tchaikov@gmail.com>