Add announce request validations
Revise tracker.js and add documentation

Announce errors handled by AnnounceError defined in tracker.js
Abstract AppError defined in lib/util