Fixed the bug cause "object modified after being freed"

Details:
1. the bug is caused by "prev_def" and "prev_bc" in
attack_analysis_strategy.cpp (previously attack.cpp). They assume
prev_def and has same target as def and prev_bc has same target as bc,
which is incorrect in multiple target attack case.
2. The bug is fixed by creating bc, prev_bc, prev_def array according
to the number of target. (shared_array and shared_ptr are applied here)
3. Allow "multiple target analysis strategy" be selected by reading
config in aspect_attack
4. An is_visited flag is added to the attack_analysis class
(analysis_result) to mark the target is not selected in a planed attack.
5. Some log information are added and the codes are cleaned a bit