[Android] Naming refine for packaging tool

First, the new w3c manifest spec requires accepting any string to be application name.
However in previous make_apk process, they were treated as invalid input.
Second, in the past time, this part of logic is always buggy and
each sub process is validating and modifying the name passed by.
It's a good time to consolidate all these codes and validate the name at beginning,
to produce all necessary strings (transferred from the input name)
for all purposes during the make apk process.
I have to admit all these name-related variables look very confusing to me. I never know what each is supposed to represent. Why does `original_name` point to the `app_name` _after_ it has undergone some transformations, what is `options.name` and why is it not part of `app_info` instead? If you're changing this code I believe it makes sense to make it easier to follow too.