Coded random access: Applying codes on graphs to design random access protocols