Fix several USB bugs
Fix several USB bugs

Major bugs are described below:

- Control IN requests after a control OUT request are incorrectly
    handled as Control OUT. This is because 'ep0_dir', used to
    indicate if a control request is IN or OUT is latched to 0
    in USBD_DirCtrlEP.

    This is fixed by always setting 'ep0_dir' in USBD_DirCtrlEP rather
    than latching it.

- Control Device-To-Host transfers with more than than 63 bytes fail.
    This is because those transfers require multiple IN packets to be
    sent, but the status stage is entered after the first packet is
    sent.

    This is fixed by starting the status stage for control Device-To-Host
    transfers only after the last IN packet has been sent. The
    transmission of the last IN packet is known when the
    EVENTS_EP0DATADONE occurs after the variable 'ep0_status_next'
    has been set to 1.

- Descriptor which have a size that are a multiple of 64 cause a
    stall when read. This is because data that is a multiple of
    64 must be terminated with a ZLP (zero lenght packet), and the
    code in 'usbd_dma' incorrectly treats a ZLP as the status stage.

    This is fixed by starting the status stage of a control request
    without a data stage based on wlength being 0 rather than the size
    of a write.

Additional Changes:

- Ignore calls to USBD_WriteEP and USBD_ReadEP to start the control
    status stage. On the nrf52xxx this does not work. Instead it
    needs to be done with USBD_TASKS_EP0STATUS_TASKS_EP0STATUS_Trigger.

- Remove code in USBD_DirCtrlEP which started TASKS_EP0RCVOUT. This
    wasn't not having any effect.

- Repalce USBD_TASKS_EP0STATUS_TASKS_EP0STATUS_Msk with
    USBD_TASKS_EP0STATUS_TASKS_EP0STATUS_Trigger for consistency. These
    have the same value so this is only cosmetic.

google/DAPLink-port,google/DAPLink-port,google/DAPLink-port,google/DAPLink-port