run always use DefaultOption

when run is called without param, the `defaultOptions` is always used.

this PR change it, 
when run is called 1st time:
    we use the Option which is merged from default and options from param.
    And save it.
when run is called again,
    The option uesd last time is merged with the new param options( if it is given ).
    Then we use this new options.

in this way, the server.run can be called once and run again and again without options any more.