Runtime crash with bogus score entry
MPF crashes during runtime. We should either refuse a broken score entry on boot/validate or it should work.

```
DEBUG : Events : ============== EVENTS QUEUE =============
DEBUG : Events : sw_playfield_active, None, None, {}
DEBUG : Events : s_stage_target_inactive, None, None, {}
DEBUG : Events : player_stage_jackpot, None, None, {'change': 1000, 'player_num': 1, 'value': 1100, 'prev_value': 100}
DEBUG : Events : mode_stage_stage_jackpot_score, None, None, {'change': 0, 'value': 1000, 'prev_value': 1000}
DEBUG : Events : =========================================
ERROR : root : need more than 1 value to unpack
Traceback (most recent call last):
 File "/home/pi/mpf/mpf/commands/core.py", line 133, in __init__
   MachineController(mpf_path, machine_path, vars(args)).run()
 File "/home/pi/mpf/mpf/core/machine.py", line 544, in run
   self._run_loop()
 File "/home/pi/mpf/mpf/core/machine.py", line 565, in _run_loop
   self.process_frame()
 File "/home/pi/mpf/mpf/core/machine.py", line 580, in process_frame
   self.events.process_event_queue()
 File "/home/pi/mpf/mpf/core/events.py", line 477, in process_event_queue
   **event[3])
 File "/home/pi/mpf/mpf/core/events.py", line 412, in _process_event
   result = handler[0](**merged_kwargs)
 File "/home/pi/mpf/mpf/core/scoring.py", line 70, in _score_event_callback
   value, block = value.split('|')
ValueError: need more than 1 value to unpack
```

diff --git a/mpf/core/scoring.py b/mpf/core/scoring.py
index e4878f2dd..0e0d29cad 100644
--- a/mpf/core/scoring.py
+++ b/mpf/core/scoring.py
@@ -25,6 +25,22 @@ class ScoreController(object):
         self.mode_configs = OrderedDict()
         self.mode_scores = dict()
 
+    def validate_entry(self, entry, mode):
+        # TODO: better validation at mode loading time
+        for value in entry.values():
+            if isinstance(value, int):
+                continue
+            elif isinstance(value, str):
+                try:
+                    value, block = value.split('|')
+                    int(value)
+                    if block != "block":
+                        raise AssertionError("Invalid action in scoring entry: {} in mode {}".format(
+                            entry, mode.name))
+                except ValueError:
+                    raise AssertionError("Invalid scoring entry: {} in mode {}".format(
+                        entry, mode.name))
+
     def mode_start(self, config, mode, priority, **kwargs):
         del kwargs
         self.mode_configs[mode] = config
@@ -32,7 +48,10 @@ class ScoreController(object):
         self.mode_configs = OrderedDict(sorted(iter(self.mode_configs.items()),
                                                key=lambda x: x[0].priority,
                                                reverse=True))
+
         for event in list(config.keys()):
+            self.validate_entry(config[event], mode)
+
             mode.add_mode_event_handler(event, self._score_event_callback,
                                         priority, event_name=event)
 
['mpf/core/scoring.py']