Make parse_target_string() not implicit merge with host

Currently, parse_target_string() always starts with get_host_target(),
and merges changes in the given string into it; this means that the
result depends on the machine being run on. While this does allow you
do do things like “host-64” to mean “my host machine, but 64 bits”,
this seems like a latent bug waiting to happen; this patch makes it
all-or-nothing for “host”.

Also, while we’re there, go ahead and convert the warning about
bits-not-specified into an explicit error.