bc(1): Sync with openBSD

This include the following changes :

 * repair function when used with different scales

 * Better error message on unexpected newline

 * save/restore tty state on SIGTSTP/SIGCONT

 * protect errno from damage in the signal handler

 * make ^D behave well
   dont't echo it and make it work if the cursor is at start of line after a ^C

 * avoid usage of YY_FLUSH_BUFFER

    - avoid YY_FLUSH_BUFFER: it is not signal safe and it does not work as intended
    after the introduction of editline
    - honour editline edit off mode

OpenBSD updated files revisions :
    - scan.l : 1.28
    - bc.y : 1.42
    - bc.library : 1.4
    - extern.h : 1.10
    - tty.c : 1.1

Obtained-from: OpenBSD
dc(1): Sync with OpenBSD

Changes include :

 * show an error message if the argument is a dir

 * check value against UINT_MAX before casting to u_int; while
   there fix a buglet in bexp(): x * UINT_MAX only overflows if x > 0

 * fix fractional number exponentiation

 * use BN_set_negative() and BN_is_negative() instead of subtracting or
   comparing to zero

 * For exponenttion, only warn if the fractional part of the exponent
   is non-zero and avoid div by zero.

 * let length(0.000) conform to what gnu bc does

 * check for unitialized elements when accessing an array

 * although there's no EOF condition defined for the handling of '?',
   but anyway reset the eof condition on stdin, so you don't get an
   infinite loop in the typical program after a ^D.

 * convert malloc to calloc

 * fix three leaks

 * use size_t as stack size and ssize_t as stack pointer

 * add missing bn_check

Revision for updated OpenBSD files are :

 - bcode.c : 1.45
 - bcode.h : 1.7
 - dc.c : 1.11
 - inout.c : 1.17
 - stack.c : 1.11

Obtained-from: OpenBSD
hammer2 - Merge Mihai Carabas's VKERNEL/VMM GSOC project into the main tree

* This merge contains work primarily by Mihai Carabas, with some misc
  fixes also by Matthew Dillon.

* Special note on GSOC core

  This is, needless to say, a huge amount of work compressed down into a
  few paragraphs of comments.  Adds the pc64/vmm subdirectory and tons
  of stuff to support hardware virtualization in guest-user mode, plus
  the ability for programs (vkernels) running in this mode to make normal
  system calls to the host.

* Add system call infrastructure for VMM mode operations in kern/sys_vmm.c
  which vectors through a structure to machine-specific implementations.

  vmm_guest_ctl_args()
  vmm_guest_sync_addr_args()

  vmm_guest_ctl_args() - bootstrap VMM and EPT modes.  Copydown the original
  user stack for EPT (since EPT 'physical' addresses cannot reach that far
  into the backing store represented by the process's original VM space).
  Also installs the GUEST_CR3 for the guest using parameters supplied by
  the guest.

  vmm_guest_sync_addr_args() - A host helper function that the vkernel can
  use to invalidate page tables on multiple real cpus.  This is a lot more
  efficient than having the vkernel try to do it itself with IPI signals
  via cpusync*().

* Add Intel VMX support to the host infrastructure.  Again, tons of work
  compressed down into a one paragraph commit message.  Intel VMX support
  added.  AMD SVM support is not part of this GSOC and not yet supported
  by DragonFly.

* Remove PG_* defines for PTE's and related mmu operations.  Replace with
  a table lookup so the same pmap code can be used for normal page tables
  and also EPT tables.

* Also include X86_PG_V defines specific to normal page tables for a few
  situations outside the pmap code.

* Adjust DDB to disassemble SVM related (intel) instructions.

* Add infrastructure to exit1() to deal related structures.

* Optimize pfind() and pfindn() to remove the global token when looking
  up the current process's PID (Matt)

* Add support for EPT (double layer page tables).  This primarily required
  adjusting the pmap code to use a table lookup to get the PG_* bits.

  Add an indirect vector for copyin, copyout, and other user address space
  copy operations to support manual walks when EPT is in use.

  A multitude of system calls which manually looked up user addresses via
  the vm_map now need a VMM layer call to translate EPT.

* Remove the MP lock from trapsignal() use cases in trap().

* (Matt) Add pthread_yield()s in most spin loops to help situations where
  the vkernel is running on more cpu's than the host has, and to help with
  scheduler edge cases on the host.

* (Matt) Add a pmap_fault_page_quick() infrastructure that vm_fault_page()
  uses to try to shortcut operations and avoid locks.  Implement it for
  pc64.  This function checks whether the page is already faulted in as
  requested by looking up the PTE.  If not it returns NULL and the full
  blown vm_fault_page() code continues running.

* (Matt) Remove the MP lock from most the vkernel's trap() code

* (Matt) Use a shared spinlock when possible for certain critical paths
  related to the copyin/copyout path.