Improved staging rule generation

1. Correct handling of destination name ending with a dot, e.g., "...".
2. Omitting any duplicate directory creation rule that produces warning.
Made change detection a lot smarter

- Now watch-modifications can detect module creation/removal/movements
  and handle them without forcing the build to go through a full rescan.
- Coalescing deleted/created/modified events as a single modified.
- Other improvements for robustness.
Isolated timestamps to prevent name collisions

In .build/, now we're keeping *.built and *.lastmodified under
timestamp/.
Made watch-modifications more robust

- Making sure watchmedo dies with the shell script counterpart.
- Better logging.