Fixed #4 the bug where laser penetrates crates sometimes
Added Physics2DExt class to detect collision in a direction more robustly
== Minor changes
Removed all (hit != null), which is always true because hit (RaycastHit2D)
is a struct
Added DebugUtils.Assert(). All other similar methods I tested don't work
well
(System.Diagnostics.Debug.Assert(), System.Diagnostics.Debugger.Break(),
UnityEngine.Debug.Break(), UnityEngine.Debug.DebugBreak())