add write_file() like Qt5 qmake. use target depened build dirs. ts dir

BUILD_DIR is stored in .build.cache under project root dir, some command
line can be as easy as normal, without additional options.
build dirs such as obj dir must be different for different targets,
because the obj files may be the same
TODO: what if some source files has the same name for 1 target? keep
source tree?
TRANSLATIONS still can not be recognized by lupdate correctly. It's
lupdate's bug