Added dismissible alert plugin

This is the cleaned up version of https://github.com/wet-boew/wet-boew/pull/5932.
Please note the build will fail because of this issue: https://github.com/wet-boew/wet-boew/issues/5927
What about placing a function call to the event handler at the end of init?

```JavaScript
/**
 * @title WET-BOEW Dismiss plugin
 * @overview Dismiss alerts (details/summary)
 * @license wet-boew.github.io/wet-boew/License-en.html / wet-boew.github.io/wet-boew/Licence-fr.html
 * @author WET community
 */
(function( $, window, wb ) {
"use strict";

/*
 * Variable and function definitions.
 * These are global to the event - meaning that they will be initialized once per page,
 * not once per instance of event on the page.
 */
var componentName = "wb-dismiss",
	selector = "details.alert",
	initEvent = "wb-init." + componentName,
	$document = wb.doc,
	details, key,

	/**
	 * @method init
	 * @param {jQuery Event} event Event that triggered the function call
	 */
	init = function( event ) {

		// Start initialization
		// returns DOM object = proceed with init
		// returns undefined = do not proceed with init (e.g., already initialized)
		details = wb.init( event, componentName, selector );

		if ( details ) {

			key = "alert-dismiss-state-" + details.getAttribute("id");

			try {
				if ( localStorage.getItem( key ) ) {

					// Set open/closed state for existing localStorage keys
					if ( localStorage.getItem( key ) === "open" ) {
						details.setAttribute( "open", "open" );
						details.className += " open";
					} else if ( localStorage.getItem( key ) === "closed" ) {
						details.removeAttribute( "open" );
						details.className = details.className.replace( " open", "" );
					}

				} else {

					// Set new localStorage values
					if ( details.hasAttribute( "open" ) ) {
						localStorage.setItem( key, "open" );
					} else {
						localStorage.setItem( key, "closed" );
					}

				}
			} catch ( e ) {}

			bindEvents();

			// Identify that initialization has completed
			wb.ready( $document, componentName );
		}
	};

	/**
	 * @method bindEvents
	 */
	bindEvents = function() {

		// Do not bind events if details polyfill is active
		if ( Modernizr.details ) {

			// Bind the the event handlers of the plugin
			$document.on( "click keydown toggle." + componentName, selector + " summary", function( event ) {
				var which = event.which,
					currentTarget = event.currentTarget,
					isClosed;

				// Ignore middle/right mouse buttons and wb-toggle enhanced summary elements (except for toggle)
				if ( ( !which || which === 1 ) &&
					( currentTarget.className.indexOf( "wb-toggle" ) === -1 ||
					( event.type === "toggle" && event.namespace === componentName ) ) ) {

					details = currentTarget.parentNode;
					isClosed = details.getAttribute( "open" ) === null ;
					key = "alert-dismiss-state-" + details.getAttribute( "id" );

					if ( isClosed ) {
						try {
							localStorage.setItem( key, "open" );
						} catch ( e ) {}
					} else {
						try {
							localStorage.setItem( key, "closed" );
						} catch ( e ) {}
					}
				} else if ( which === 13 || which === 32 ) {
					event.preventDefault();
					$( currentTarget ).trigger( "click" );
				}

				/*
				 * Since we are working with events we want to ensure that we are being passive about our control,
				 * so returning true allows for events to always continue
				 */
				return true;
			});
		}
	};

// Bind the init event of the plugin
$document.on( "timerpoke.wb " + initEvent, selector, init );

// Add the timer poke to initialize the plugin
wb.add( selector );

})( jQuery, window, wb );
```