Nolan defeats Cravaack in 8th District