Channel Assignment and Spatial Reuse Scheduling to Improve Throughput and Enhance Fairness in Wireless Mesh Networks