A review of thermal rectification in solid-state devices