1. Fixed the bug for removal of cars --> previously car waiting at alley cannot be removed immediately and need to wait until it gets notified.
2. Add the CarDisplayState ENUM to keep track of the current state of the car so that when it is removed, we know which cd.clear() function to call
3. Changed the monitorAlley condition to use while instead of if
4. Add HashSet and new function removeCar to bridge to remove cars that are already on the bridge --> otherwise currently bridge is turned on by default and it cause cars to wait at the alley when they are removed on the bridge.
5. Removed unnecessary InterruptedException (only required for method that has wait() in it)