Fixed the signature on parseJson
And noodling with validateUnstructEvent
Improved validation error and made consistent with other ones:

EventEnrichments.validateUnstructEvent("f", bad)
res1: scalaz.Validation[String,String] = Failure(Field [f]: invalid JSON with parsing error: Unexpected content found: <>)
Added another helper method, which decodes the String before validating the JSON:

scala> val good64 = "eyJhZ2UiOjIzLCJuYW1lIjoiSm9obiJ9"
good64: java.lang.String = eyJhZ2UiOjIzLCJuYW1lIjoiSm9obiJ9

scala> val bad64 = "am9obitzbWl0aA"
bad64: java.lang.String = am9obitzbWl0aA

scala> EventEnrichments.decodeAndValidateUnstructEvent("f", good64)
res2: scalaz.Validation[String,String] = Success({"age":23.0,"name":"John"})

scala> EventEnrichments.decodeAndValidateUnstructEvent("f", bad64)
res3: scalaz.Validation[String,String] = Failure(Field [f]: invalid JSON with parsing error: Unexpected content found: john+smith)

scala> EventEnrichments.decodeAndValidateUnstructEvent("f", null)
res4: scalaz.Validation[String,String] = Failure(Field [f]: exception Base64-decoding [null] (URL-safe encoding): [null])

/cc @gabor
Switched from fold to bimap (binary functor map), because pointless to deconstruct and then rebuild the Validation
/cc @rgabo
Keep only sample configuration for hadoop-etl
Keep only sample configuration for storage-loader
Include unstructured event fields in the canonical output and update Cloudfront line tests
Include both unstructured event name and JSON payload in Redshift schema until the payload is handled separately