crimson/osd: partition args the right way
before this change, all "unknown" args are considered `ceph_args`, but
there is chance we have command line like
crimson-osd -i 1 -c ceph.conf --smp 1 --cpuset
00000001
in this case, "1" is listed in `unknown_args`, but it is also in
`parsed.options`. so we will put the second "1" into `ceph_args` even it
should be appended to `app_args`.
so, in this change, `std::partition_copy()` is replaced with a
hand-written loop which advances through the `argv` and `unknown_args`,
try to match as many consecutive options are possible. it assumes that
the order of args in `unknown_args` is the same as their order in
`argv[]`.
Signed-off-by: Kefu Chai <kchai@redhat.com>