x86: GRUB serial: use physical serial I/O port

Reviewed By: dustin

Some BIOSes incorrectly map logical serial ports in the "BIOS Data
Area (BDA)" to the wrong physical serial port. See offset 0x0400 in
this reference:

  http://wiki.osdev.org/Memory_Map_(x86)

The grub "serial" command uses the --unit= option to specify the
logical BIOS serial port to use.  Unfortunately on some systems
--unit=0 does not always correspond to COM1 (I/O port 0x3f8).

When the mapping is wrong the GRUB boot menu does not appear on the
serial console.  The first messages seen in this case come from the
ONIE kernel when it boots.

Instead of using --unit= the serial port can be specified using
--port= and the I/O port.  The --port= option takes priority over the
--unit= option.

This patch changes all GRUB serial commands to use --port=0x3f8
instead of --unit=0.

This also follows how the Linux kernel maps serial ports to I/O ports
on x86 systems.  For example /dev/ttyS0 maps to I/O port 0x3f8 without
consulting the mapping table in the "BIOS Data Area".

Testing Done:

Ran the updated images in the following situations:

- KVM -- things continued to work fine.

- System with bad BIOS -- Previously the GRUB boot menu was absent due
  to the bad BDA mapping.  After this change the GRUB boot menu is
  working again.