Bipolar Flash Memory (BipFlash) - A new Architecture for a Non-Volatile Memory with a High Programming Efficiency