Yahoo! buys smartphone app from 17-year-old for $30 million