Buffalo's Josh Allen has been named the NFL's most valuable player, beating Baltimore's Lamar Jackson in a close battle.