[Communication] Implement thread pool and basic 2-way communication

1 commit for thread pool.
1 commit for editing the .gitignore and delete some useless binary files.