parse_boolean: require exact matches

Require exact matches in all cases instead of treating strings
starting with 't' ('f') as true (false).

This is required for config_parse_protect_system to parse ProtectSystem=full
correctly: it uses parse_boolean and only tries a more specific parsing
function if that did not return a valid result. Thus "full" was treated as
"false" before.
drop_duplicates: copy full BindMount struct

At least

  t->ignore = f->ignore;

is missing here. Just copy the full struct to be sure.
shell-completion: prevent mangling unit names (bash)

This fixes the issue noted by Zbigniew in most cases.
if a unit's name is enclosed in single quotes completion still
will not happen after the first `\'.

https://bugs.freedesktop.org/show_bug.cgi?id=78388