Channel Coding Methods for Non-Volatile Memories (Foundations and Trends in Communications and Information Theory)