udev: move udev_event_spawn over to an sd_event loop.
strv_split_quoted: return length of strv
udev: replace udev_build_argv with strv_split_quoted
udev-ctrl: expose message type enum.

this alows for an easy and elegeant switch() to replace a lot of if()
else if()
list.h: implement LIST_APPEND()

this allows O(1) appending of items to a list, this was previously
achieved by LIST_FIND_TAIL followed by LIST_INSERT_AFTER, but this was
O(n).

the name##_other_end field is set if the item is first or last in the
list. it points to the item at the other side:
tail == head->name##_other_end;
head == tail->name##_other_end;
udev-list: port to list.h
udev port collect and udevd to list.h
misc list.h cleanup

made all access to the list's field go trough the LIST_* macros
terminal: use list.h